summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorleo2005-09-18 05:10:19 +0000
committerleo2005-09-18 05:10:19 +0000
commit13eed6e982c15843608ee2d58c56ab7044d71347 (patch)
tree7b8ff463ca9643dd6669b43761918d3fde692fe5
parentbd6ddd4917e5ae8410496d9f36adb7dd2f6484f6 (diff)
Added separate XY and Z snap options.
git-svn-id: http://svn.leocad.org/trunk@418 c7d43263-9d01-0410-8a33-9dba5d9f93d6
-rw-r--r--common/keyboard.cpp30
-rw-r--r--common/project.cpp74
-rw-r--r--common/typedefs.h30
-rw-r--r--win/System.cpp28
4 files changed, 108 insertions, 54 deletions
diff --git a/common/keyboard.cpp b/common/keyboard.cpp
index 5d7324b..5251f22 100644
--- a/common/keyboard.cpp
+++ b/common/keyboard.cpp
@@ -85,16 +85,26 @@ LC_KEYBOARD_COMMAND DefaultKeyboardShortcuts[] =
// { LC_TOOLBAR_BACKGROUND, "", 0, 0, 0 },
{ LC_VIEW_STEP_INSERT, "Step Insert", 0, 0, 0 },
{ LC_VIEW_STEP_DELETE, "Step Delete", 0, 0, 0 },
- { LC_EDIT_MOVE_SNAP_0, "Move Snap 0", 0, LC_KEY_0, 0 },
- { LC_EDIT_MOVE_SNAP_1, "Move Snap 1", 0, LC_KEY_1, 0 },
- { LC_EDIT_MOVE_SNAP_2, "Move Snap 2", 0, LC_KEY_2, 0 },
- { LC_EDIT_MOVE_SNAP_3, "Move Snap 3", 0, LC_KEY_3, 0 },
- { LC_EDIT_MOVE_SNAP_4, "Move Snap 4", 0, LC_KEY_4, 0 },
- { LC_EDIT_MOVE_SNAP_5, "Move Snap 5", 0, LC_KEY_5, 0 },
- { LC_EDIT_MOVE_SNAP_6, "Move Snap 6", 0, LC_KEY_6, 0 },
- { LC_EDIT_MOVE_SNAP_7, "Move Snap 7", 0, LC_KEY_7, 0 },
- { LC_EDIT_MOVE_SNAP_8, "Move Snap 8", 0, LC_KEY_8, 0 },
- { LC_EDIT_MOVE_SNAP_9, "Move Snap 9", 0, LC_KEY_9, 0 },
+ { LC_EDIT_MOVEXY_SNAP_0, "Move XY Snap 0", 0, LC_KEY_0, 0 },
+ { LC_EDIT_MOVEXY_SNAP_1, "Move XY Snap 1", 0, LC_KEY_1, 0 },
+ { LC_EDIT_MOVEXY_SNAP_2, "Move XY Snap 2", 0, LC_KEY_2, 0 },
+ { LC_EDIT_MOVEXY_SNAP_3, "Move XY Snap 3", 0, LC_KEY_3, 0 },
+ { LC_EDIT_MOVEXY_SNAP_4, "Move XY Snap 4", 0, LC_KEY_4, 0 },
+ { LC_EDIT_MOVEXY_SNAP_5, "Move XY Snap 5", 0, LC_KEY_5, 0 },
+ { LC_EDIT_MOVEXY_SNAP_6, "Move XY Snap 6", 0, LC_KEY_6, 0 },
+ { LC_EDIT_MOVEXY_SNAP_7, "Move XY Snap 7", 0, LC_KEY_7, 0 },
+ { LC_EDIT_MOVEXY_SNAP_8, "Move XY Snap 8", 0, LC_KEY_8, 0 },
+ { LC_EDIT_MOVEXY_SNAP_9, "Move XY Snap 9", 0, LC_KEY_9, 0 },
+ { LC_EDIT_MOVEZ_SNAP_0, "Move Z Snap 0", LC_KEYMOD1_SHIFT|LC_KEYMOD1_CONTROL, LC_KEY_0, 0 },
+ { LC_EDIT_MOVEZ_SNAP_1, "Move Z Snap 1", LC_KEYMOD1_SHIFT|LC_KEYMOD1_CONTROL, LC_KEY_1, 0 },
+ { LC_EDIT_MOVEZ_SNAP_2, "Move Z Snap 2", LC_KEYMOD1_SHIFT|LC_KEYMOD1_CONTROL, LC_KEY_2, 0 },
+ { LC_EDIT_MOVEZ_SNAP_3, "Move Z Snap 3", LC_KEYMOD1_SHIFT|LC_KEYMOD1_CONTROL, LC_KEY_3, 0 },
+ { LC_EDIT_MOVEZ_SNAP_4, "Move Z Snap 4", LC_KEYMOD1_SHIFT|LC_KEYMOD1_CONTROL, LC_KEY_4, 0 },
+ { LC_EDIT_MOVEZ_SNAP_5, "Move Z Snap 5", LC_KEYMOD1_SHIFT|LC_KEYMOD1_CONTROL, LC_KEY_5, 0 },
+ { LC_EDIT_MOVEZ_SNAP_6, "Move Z Snap 6", LC_KEYMOD1_SHIFT|LC_KEYMOD1_CONTROL, LC_KEY_6, 0 },
+ { LC_EDIT_MOVEZ_SNAP_7, "Move Z Snap 7", LC_KEYMOD1_SHIFT|LC_KEYMOD1_CONTROL, LC_KEY_7, 0 },
+ { LC_EDIT_MOVEZ_SNAP_8, "Move Z Snap 8", LC_KEYMOD1_SHIFT|LC_KEYMOD1_CONTROL, LC_KEY_8, 0 },
+ { LC_EDIT_MOVEZ_SNAP_9, "Move Z Snap 9", LC_KEYMOD1_SHIFT|LC_KEYMOD1_CONTROL, LC_KEY_9, 0 },
{ LC_EDIT_ANGLE_SNAP_0, "Angle Snap 1", LC_KEYMOD1_SHIFT, LC_KEY_0, 0 },
{ LC_EDIT_ANGLE_SNAP_1, "Angle Snap 5", LC_KEYMOD1_SHIFT, LC_KEY_1, 0 },
{ LC_EDIT_ANGLE_SNAP_2, "Angle Snap 10", LC_KEYMOD1_SHIFT, LC_KEY_2, 0 },
diff --git a/common/project.cpp b/common/project.cpp
index 6de06fe..f8e339f 100644
--- a/common/project.cpp
+++ b/common/project.cpp
@@ -559,7 +559,7 @@ void Project::LoadDefaults(bool cameras)
SystemUpdateSnap(m_nSnap);
m_nMoveSnap = 0;
SystemUpdateSnap(m_nMoveSnap, m_nAngleSnap);
- m_fLineWidth = (float)Sys_ProfileLoadInt ("Default", "Line", 100)/100;
+ m_fLineWidth = (float)Sys_ProfileLoadInt ("Default", "Line", 100)/100;
m_fFogDensity = (float)Sys_ProfileLoadInt ("Default", "Density", 10)/100;
rgb = Sys_ProfileLoadInt ("Default", "Fog", 0xFFFFFF);
m_fFogColor[0] = (float)((unsigned char) (rgb))/255;
@@ -6270,7 +6270,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
if (nParam == 19)
m_nMoveSnap = 100;
else
- m_nMoveSnap = (unsigned short)(nParam - 10)*5 + 10;
+ m_nMoveSnap = ((unsigned short)(nParam - 10)*5 + 10) | (m_nMoveSnap & ~0xff);
}
SystemUpdateSnap(m_nMoveSnap, m_nAngleSnap);
} break;
@@ -6297,18 +6297,33 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam)
SystemUpdateRenderingMode((m_nDetail & LC_DET_BACKGROUND) != 0, (m_nDetail & LC_DET_FAST) != 0);
} break;
- case LC_EDIT_MOVE_SNAP_0:
- case LC_EDIT_MOVE_SNAP_1:
- case LC_EDIT_MOVE_SNAP_2:
- case LC_EDIT_MOVE_SNAP_3:
- case LC_EDIT_MOVE_SNAP_4:
- case LC_EDIT_MOVE_SNAP_5:
- case LC_EDIT_MOVE_SNAP_6:
- case LC_EDIT_MOVE_SNAP_7:
- case LC_EDIT_MOVE_SNAP_8:
- case LC_EDIT_MOVE_SNAP_9:
- {
- m_nMoveSnap = id - LC_EDIT_MOVE_SNAP_0;
+ case LC_EDIT_MOVEXY_SNAP_0:
+ case LC_EDIT_MOVEXY_SNAP_1:
+ case LC_EDIT_MOVEXY_SNAP_2:
+ case LC_EDIT_MOVEXY_SNAP_3:
+ case LC_EDIT_MOVEXY_SNAP_4:
+ case LC_EDIT_MOVEXY_SNAP_5:
+ case LC_EDIT_MOVEXY_SNAP_6:
+ case LC_EDIT_MOVEXY_SNAP_7:
+ case LC_EDIT_MOVEXY_SNAP_8:
+ case LC_EDIT_MOVEXY_SNAP_9:
+ {
+ m_nMoveSnap = (id - LC_EDIT_MOVEXY_SNAP_0) | (m_nMoveSnap & ~0xff);
+ SystemUpdateSnap(m_nMoveSnap, m_nAngleSnap);
+ } break;
+
+ case LC_EDIT_MOVEZ_SNAP_0:
+ case LC_EDIT_MOVEZ_SNAP_1:
+ case LC_EDIT_MOVEZ_SNAP_2:
+ case LC_EDIT_MOVEZ_SNAP_3:
+ case LC_EDIT_MOVEZ_SNAP_4:
+ case LC_EDIT_MOVEZ_SNAP_5:
+ case LC_EDIT_MOVEZ_SNAP_6:
+ case LC_EDIT_MOVEZ_SNAP_7:
+ case LC_EDIT_MOVEZ_SNAP_8:
+ case LC_EDIT_MOVEZ_SNAP_9:
+ {
+ m_nMoveSnap = (((id - LC_EDIT_MOVEZ_SNAP_0) << 8) | (m_nMoveSnap & ~0xff00));
SystemUpdateSnap(m_nMoveSnap, m_nAngleSnap);
} break;
@@ -7110,18 +7125,19 @@ void Project::StartTracking(int mode)
void Project::SnapVector(Vector3& Delta, Vector3& Leftover) const
{
+ lcuint32 SXY = (m_nMoveSnap & 0xff);
+ lcuint32 SZ = ((m_nMoveSnap >> 8) & 0xff);
float SnapXY, SnapZ;
- if (m_nMoveSnap > 0)
- {
- SnapXY = 0.8f * m_nMoveSnap;
- SnapZ = 0.32f * m_nMoveSnap;
- }
+ if (SXY > 0)
+ SnapXY = 0.8f * SXY;
else
- {
SnapXY = 0.4f;
+
+ if (SZ > 0)
+ SnapZ = 0.96f * SZ;
+ else
SnapZ = 0.32f;
- }
if (m_nSnap & LC_DRAW_SNAP_X)
{
@@ -7530,16 +7546,18 @@ bool Project::OnKeyDown(char nKey, bool bControl, bool bShift)
}
else
{
- if (m_nMoveSnap > 0)
- {
- axis[0] = axis[1] = 0.8f * m_nMoveSnap;
- axis[2] = 0.32f * m_nMoveSnap;
- }
+ lcuint32 SnapXY = (m_nMoveSnap & 0xff);
+ lcuint32 SnapZ = ((m_nMoveSnap >> 8) & 0xff);
+
+ if (SnapXY > 0)
+ axis[0] = axis[1] = 0.8f * SnapXY;
else
- {
axis[0] = axis[1] = 0.4f;
+
+ if (SnapZ > 0)
+ axis[2] = 0.96f * SnapZ;
+ else
axis[2] = 0.32f;
- }
if ((m_nSnap & LC_DRAW_SNAP_X == 0) || bControl)
axis[0] = 0.01f;
diff --git a/common/typedefs.h b/common/typedefs.h
index 7c03359..e3c1309 100644
--- a/common/typedefs.h
+++ b/common/typedefs.h
@@ -94,16 +94,26 @@ typedef enum
LC_TOOLBAR_SNAPMOVEMENU,
LC_TOOLBAR_FASTRENDER,
LC_TOOLBAR_BACKGROUND,
- LC_EDIT_MOVE_SNAP_0,
- LC_EDIT_MOVE_SNAP_1,
- LC_EDIT_MOVE_SNAP_2,
- LC_EDIT_MOVE_SNAP_3,
- LC_EDIT_MOVE_SNAP_4,
- LC_EDIT_MOVE_SNAP_5,
- LC_EDIT_MOVE_SNAP_6,
- LC_EDIT_MOVE_SNAP_7,
- LC_EDIT_MOVE_SNAP_8,
- LC_EDIT_MOVE_SNAP_9,
+ LC_EDIT_MOVEXY_SNAP_0,
+ LC_EDIT_MOVEXY_SNAP_1,
+ LC_EDIT_MOVEXY_SNAP_2,
+ LC_EDIT_MOVEXY_SNAP_3,
+ LC_EDIT_MOVEXY_SNAP_4,
+ LC_EDIT_MOVEXY_SNAP_5,
+ LC_EDIT_MOVEXY_SNAP_6,
+ LC_EDIT_MOVEXY_SNAP_7,
+ LC_EDIT_MOVEXY_SNAP_8,
+ LC_EDIT_MOVEXY_SNAP_9,
+ LC_EDIT_MOVEZ_SNAP_0,
+ LC_EDIT_MOVEZ_SNAP_1,
+ LC_EDIT_MOVEZ_SNAP_2,
+ LC_EDIT_MOVEZ_SNAP_3,
+ LC_EDIT_MOVEZ_SNAP_4,
+ LC_EDIT_MOVEZ_SNAP_5,
+ LC_EDIT_MOVEZ_SNAP_6,
+ LC_EDIT_MOVEZ_SNAP_7,
+ LC_EDIT_MOVEZ_SNAP_8,
+ LC_EDIT_MOVEZ_SNAP_9,
LC_EDIT_ANGLE_SNAP_0,
LC_EDIT_ANGLE_SNAP_1,
LC_EDIT_ANGLE_SNAP_2,
diff --git a/win/System.cpp b/win/System.cpp
index c581e83..6406017 100644
--- a/win/System.cpp
+++ b/win/System.cpp
@@ -667,15 +667,31 @@ void SystemUpdateTime(bool bAnimation, int nTime, int nTotal)
void SystemUpdateSnap(unsigned short MoveSnap, unsigned short RotateSnap)
{
- // Status bar
- char snap[256];
+ char Text[256], Buffer[256];
+
+ int SnapXY = MoveSnap & 0xff;
+ int SnapZ = (MoveSnap >> 8) & 0xff;
+
+ strcpy(Text, " M: ");
+
+ if (SnapXY)
+ sprintf(Buffer, "%d", SnapXY);
+ else
+ strcpy(Buffer, "/2");
+
+ strcat(Text, Buffer);
- if (MoveSnap)
- wsprintf(snap, " M: %d R: %d ", MoveSnap, RotateSnap);
+ if (SnapZ)
+ sprintf(Buffer, " %d", SnapZ);
else
- wsprintf(snap, " M: /2 R: %d ", RotateSnap);
+ strcpy(Buffer, " /3");
+
+ strcat(Text, Buffer);
+
+ sprintf(Buffer, " R: %d ", RotateSnap);
+ strcat(Text, Buffer);
- ((CMainFrame*)AfxGetMainWnd())->SetStatusBarPane(ID_INDICATOR_SNAP, snap);
+ ((CMainFrame*)AfxGetMainWnd())->SetStatusBarPane(ID_INDICATOR_SNAP, Text);
}
void SystemUpdatePaste(bool enable)