Skip to content

Commit

Permalink
texturev: Added horizontal and vertical flip.
Browse files Browse the repository at this point in the history
  • Loading branch information
bkaradzic committed Jun 16, 2024
1 parent acfad63 commit 32866e9
Showing 1 changed file with 39 additions and 18 deletions.
57 changes: 39 additions & 18 deletions tools/texturev/texturev.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,9 @@ static const InputBinding s_bindingApp[] =

const char* s_resetCmd =
"view zoom 1.0\n"
"view rotate 0\n"
"view rotate x 0\n"
"view rotate y 0\n"
"view rotate z 0\n"
"view cubemap\n"
"view pan\n"
"view ev\n"
Expand All @@ -160,8 +162,11 @@ static const InputBinding s_bindingView[] =
{ entry::Key::Plus, entry::Modifier::None, 1, NULL, "view zoom +0.1" },
{ entry::Key::Minus, entry::Modifier::None, 1, NULL, "view zoom -0.1" },

{ entry::Key::KeyZ, entry::Modifier::None, 1, NULL, "view rotate -90" },
{ entry::Key::KeyZ, entry::Modifier::LeftShift, 1, NULL, "view rotate +90" },
{ entry::Key::KeyZ, entry::Modifier::None, 1, NULL, "view rotate z -90" },
{ entry::Key::KeyZ, entry::Modifier::LeftShift, 1, NULL, "view rotate z +90" },

{ entry::Key::KeyX, entry::Modifier::None, 1, NULL, "view rotate x +180" },
{ entry::Key::KeyY, entry::Modifier::None, 1, NULL, "view rotate y +180" },

{ entry::Key::Up, entry::Modifier::None, 1, NULL, "view pan\n"
"view file-up" },
Expand Down Expand Up @@ -273,7 +278,6 @@ struct View
, m_angx(0.0f)
, m_angy(0.0f)
, m_zoom(1.0f)
, m_angle(0.0f)
, m_orientation(0.0f)
, m_flipH(0.0f)
, m_flipV(0.0f)
Expand All @@ -290,6 +294,10 @@ struct View
, m_sdf(false)
, m_inLinear(false)
{
m_rotate[0] = 0.0f;
m_rotate[1] = 0.0f;
m_rotate[2] = 0.0f;

load();

m_textureInfo.format = bgfx::TextureFormat::Count;
Expand Down Expand Up @@ -476,24 +484,28 @@ struct View
{
if (_argc >= 3)
{
int8_t axis = bx::clamp(bx::toLower(_argv[2][0]) - 'x', 0, 2);

float angle;
bx::fromString(&angle, _argv[2]);
bx::fromString(&angle, _argv[3]);

if (_argv[2][0] == '+'
|| _argv[2][0] == '-')
if (_argv[3][0] == '+'
|| _argv[3][0] == '-')
{
m_angle += bx::toRad(angle);
m_rotate[axis] += bx::toRad(angle);
}
else
{
m_angle = bx::toRad(angle);
m_rotate[axis] = bx::toRad(angle);
}

m_angle = bx::wrap(m_angle, bx::kPi*2.0f);
m_rotate[axis] = bx::wrap(m_rotate[axis], bx::kPi*2.0f);
}
else
{
m_angle = 0.0f;
m_rotate[0] = 0.0f;
m_rotate[1] = 0.0f;
m_rotate[2] = 0.0f;
}
}
else if (0 == bx::strCmp(_argv[1], "orientation") )
Expand All @@ -516,7 +528,8 @@ struct View
{
float angle;
bx::fromString(&angle, _argv[3]);
*dst = bx::toRad(angle);
angle = bx::toRad(angle);
*dst = bx::wrap(angle, bx::kPi*2.0f);
}
else
{
Expand Down Expand Up @@ -869,7 +882,7 @@ struct View
float m_angx;
float m_angy;
float m_zoom;
float m_angle;
float m_rotate[3];
float m_orientation;
float m_flipH;
float m_flipV;
Expand Down Expand Up @@ -1451,7 +1464,9 @@ int _main_(int _argc, char** _argv)
Interpolator scale(1.0f);
Interpolator posx(0.0f);
Interpolator posy(0.0f);
InterpolatorAngle angle(0.0f);
InterpolatorAngle rotateX(0.0f);
InterpolatorAngle rotateY(0.0f);
InterpolatorAngle rotateZ(0.0f);
InterpolatorAngle angx(0.0f);
InterpolatorAngle angy(0.0f);

Expand All @@ -1467,7 +1482,9 @@ int _main_(int _argc, char** _argv)
|| scale.isActive()
|| posx.isActive()
|| posy.isActive()
|| angle.isActive()
|| rotateX.isActive()
|| rotateY.isActive()
|| rotateZ.isActive()
|| angx.isActive()
|| angy.isActive()
;
Expand Down Expand Up @@ -1983,7 +2000,9 @@ int _main_(int _argc, char** _argv)

keyBindingHelp("LMB+drag", "Pan.");
keyBindingHelp("=/- or MW", "Zoom in/out.");
keyBindingHelp("z/Z", "Rotate.");
keyBindingHelp("x", "Horizontal flip (z-axis relative).");
keyBindingHelp("y", "Vertical flip (z-axis relative).");
keyBindingHelp("z/Z", "Rotate around Z axis.");
keyBindingHelp("0", "Reset.");
keyBindingHelp("1", "Fit to window.");
ImGui::NextLine();
Expand Down Expand Up @@ -2174,7 +2193,7 @@ int _main_(int _argc, char** _argv)
bgfx::dbgTextClear();

float orientation[16];
bx::mtxRotateXYZ(orientation, view.m_flipH, view.m_flipV, angle.getValue()+view.m_orientation);
bx::mtxRotateXYZ(orientation, rotateY.getValue()+view.m_flipH, rotateX.getValue()+view.m_flipV, rotateZ.getValue()+view.m_orientation);

if (view.m_fit)
{
Expand All @@ -2192,7 +2211,9 @@ int _main_(int _argc, char** _argv)
}

zoom.set(view.m_zoom, transitionTime);
angle.set(view.m_angle, transitionTime);
rotateX.set(view.m_rotate[0], transitionTime);
rotateY.set(view.m_rotate[1], transitionTime);
rotateZ.set(view.m_rotate[2], transitionTime);
angx.set(view.m_angx, transitionTime);
angy.set(view.m_angy, transitionTime);

Expand Down

0 comments on commit 32866e9

Please sign in to comment.