From: Peter S. <zu...@us...> - 2006-04-15 15:50:30
|
Update of /cvsroot/apophysis/2.10/Source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14026/Source Modified Files: Editor.dfm Editor.pas Global.pas Options.dfm Options.pas Regstry.pas Log Message: new doubleclick actions, modes and toolbar buttons in editor Index: Editor.pas =================================================================== RCS file: /cvsroot/apophysis/2.10/Source/Editor.pas,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** Editor.pas 13 Apr 2006 16:14:32 -0000 1.43 --- Editor.pas 15 Apr 2006 15:50:26 -0000 1.44 *************** *** 29,39 **** const ! // PixelCountMax = 32768; ! // WM_PTHREAD_COMPLETE = WM_APP + 5438; ! ! crEditArrow = 20; ! crEditMove = 21; crEditRotate = 22; ! crEditScale = 23; type --- 29,40 ---- const ! crEditArrow = 20; ! crEditMove = 21; crEditRotate = 22; ! crEditScale = 23; ! ! imgExtMove = 24; ! imgExtRotate = 25; ! imgExtScale = 26; type *************** *** 121,128 **** tbFlipVert: TToolButton; tbSelect: TToolButton; - btTrgMoveLU: TSpeedButton; - btTrgMoveLD: TSpeedButton; - btTrgMoveRU: TSpeedButton; - btTrgMoveRD: TSpeedButton; EditorTB: TImageList; TabSheet4: TTabSheet; --- 122,125 ---- *************** *** 175,183 **** pnlWeight: TPanel; pnlSymmetry: TPanel; ! tbAutoEditMode: TToolButton; mnuResetTrgRotation: TMenuItem; mnuResetTrgPosition: TMenuItem; mnuResetTrgScale: TMenuItem; N7: TMenuItem; procedure ValidateVariable; procedure vleVariablesValidate(Sender: TObject; ACol, ARow: Integer; const KeyName, KeyValue: string); --- 172,196 ---- pnlWeight: TPanel; pnlSymmetry: TPanel; ! tbExtendedEdit: TToolButton; mnuResetTrgRotation: TMenuItem; mnuResetTrgPosition: TMenuItem; mnuResetTrgScale: TMenuItem; N7: TMenuItem; + mnuExtendedEdit: TMenuItem; + N8: TMenuItem; + mnuAxisLock: TMenuItem; + tbAxisLock: TToolButton; + mnuSelectmode: TMenuItem; + ToolButton6: TToolButton; + ExtendedEditPopup: TPopupMenu; + mnuExtEditOff: TMenuItem; + mnuExtEditMove: TMenuItem; + mnuExtEditRotate: TMenuItem; + mnuExtEditScale: TMenuItem; + N9: TMenuItem; + tbPivotMode: TToolButton; + tbRotate90CCW: TToolButton; + tbRotate90CW: TToolButton; + chkAxisLock: TCheckBox; procedure ValidateVariable; procedure vleVariablesValidate(Sender: TObject; ACol, ARow: Integer; const KeyName, KeyValue: string); *************** *** 318,323 **** procedure mnuResetTrgRotationClick(Sender: TObject); procedure mnuResetTrgScaleClick(Sender: TObject); ! procedure ResetEdgeRotation(n: integer); ! procedure ResetEdgeScale(n: integer); private --- 331,338 ---- procedure mnuResetTrgRotationClick(Sender: TObject); procedure mnuResetTrgScaleClick(Sender: TObject); ! procedure ResetAxisRotation(n: integer); ! procedure ResetAxisScale(n: integer); ! procedure tbExtendedEditClick(Sender: TObject); ! procedure tbAxisLockClick(Sender: TObject); private *************** *** 327,331 **** viewDragMode, viewDragged: boolean; ! editMode, oldMode: (modeNone, modeMove, modeRotate, modeScale, modePick); modeHack: boolean; // for mouseOverEdge... modeKey: word; --- 342,346 ---- viewDragMode, viewDragged: boolean; ! editMode, oldMode, widgetMode: (modeNone, modeMove, modeRotate, modeScale, modePick); modeHack: boolean; // for mouseOverEdge... modeKey: word; *************** *** 346,349 **** --- 361,365 ---- varMM: boolean; //hack? + SelectMode, ExtendedEdit, AxisLock: boolean; showVarPreview: boolean; *************** *** 355,364 **** oldSelected: integer; SelectedCorner: integer; - SelectMode: boolean; HasChanged: boolean; oldx, oldy, olddist: double; Pivot, LocalPivot, WorldPivot: TSPoint; ! PivotMode: (pivotLocal, pivotWorld); VarsCache: array[0..64] of double; // hack: to prevent slow valuelist redraw --- 371,379 ---- oldSelected: integer; SelectedCorner: integer; HasChanged: boolean; oldx, oldy, olddist: double; Pivot, LocalPivot, WorldPivot: TSPoint; ! PivotMode: (pivotLocal, pivotWorld); VarsCache: array[0..64] of double; // hack: to prevent slow valuelist redraw *************** *** 1192,1196 **** UpdateWidgets; ! if AutoEditMode then begin n := GetTriangleColor(SelectedTriangle);// shr 1 and $7f7f7f; if mouseOverTriangle <> SelectedTriangle then n := n shr 1 and $7f7f7f; --- 1207,1211 ---- UpdateWidgets; ! if ExtendedEdit then begin n := GetTriangleColor(SelectedTriangle);// shr 1 and $7f7f7f; if mouseOverTriangle <> SelectedTriangle then n := n shr 1 and $7f7f7f; *************** *** 1411,1415 **** end; end; - end; // if EdgeCaught then --- 1426,1429 ---- *************** *** 1429,1432 **** --- 1443,1447 ---- pen.Width:=1; end; + end; // draw pivot point *************** *** 1529,1532 **** --- 1544,1553 ---- SelectMode := true; editMode := modeMove; + AxisLock := TransformAxisLock; + tbAxisLock.Down := AxisLock; + ExtendedEdit := ExtEditEnabled; + // tbExtendedEdit.Down := ExtendedEdit; + widgetMode := modeRotate; + // tbExtendedEdit.ImageIndex := imgExtMove; EdgeCaught := false; *************** *** 1606,1610 **** // -- from MouseDown -- for highlighting: // TODO: optimize... ! if (j = 1) then //and ((rgPivot.ItemIndex = 1) or (rgPivot.ItemIndex = 4)) then begin if PivotMode = pivotLocal then begin --- 1627,1631 ---- // -- from MouseDown -- for highlighting: // TODO: optimize... ! if (j = 1) then begin if PivotMode = pivotLocal then begin *************** *** 1637,1641 **** end; ! if AutoEditMode then //and (oldMode = modeNone) then begin for i := 0 to 3 do // -- detect 'widget' hit --- 1658,1662 ---- end; ! if ExtendedEdit then //and (oldMode = modeNone) then begin for i := 0 to 3 do // -- detect 'widget' hit *************** *** 1814,1817 **** --- 1835,1845 ---- vy := fy; end; + if (SelectedCorner = 1) and AxisLock then with MainTriangles[SelectedTriangle] do + begin + x[0] := OldTriangle.x[0] + (vx - OldTriangle.x[1]); + y[0] := OldTriangle.y[0] + (vy - OldTriangle.y[1]); + x[2] := OldTriangle.x[2] + (vx - OldTriangle.x[1]); + y[2] := OldTriangle.y[2] + (vy - OldTriangle.y[1]); + end; MainTriangles[SelectedTriangle].x[SelectedCorner] := vx; MainTriangles[SelectedTriangle].y[SelectedCorner] := vy; *************** *** 1858,1862 **** begin if olddist<>0 then begin ! vy := (oldx*(fx-Pivot.X) + oldy*(fy-Pivot.Y))/(olddist*olddist); if ssShift in Shift then // 'snapped' scale --- 1886,1890 ---- begin if olddist<>0 then begin ! vy := (oldx*(fx-Pivot.X) + oldy*(fy-Pivot.Y))/sqr(olddist); if ssShift in Shift then // 'snapped' scale *************** *** 2015,2019 **** end; ! if AutoEditMode then //and (oldMode = modeNone) then begin for i := 0 to 3 do // -- detect 'widget' hit --- 2043,2047 ---- end; ! if ExtendedEdit then //and (oldMode = modeNone) then begin for i := 0 to 3 do // -- detect 'widget' hit *************** *** 2022,2026 **** if abs(line_dist(fx, fy, Widgets[i][j].x, Widgets[i][j].y, Widgets[i][j+1].x, Widgets[i][j+1].y) ! ) * GraphZoom * 50 < 3 then begin // modeHack := true; --- 2050,2054 ---- if abs(line_dist(fx, fy, Widgets[i][j].x, Widgets[i][j].y, Widgets[i][j+1].x, Widgets[i][j+1].y) ! ) * GraphZoom * 50 < 3 then begin // modeHack := true; *************** *** 2053,2057 **** editMode := modeScale else ! // editMode := modeRotate; begin // hacky... --- 2081,2086 ---- editMode := modeScale else ! if AxisLock then editMode := modeRotate ! else begin // hacky... *************** *** 2226,2230 **** end; chkUseXFormColor.checked := UseTransformColors; ! if AutoEditMode then tbAutoEditMode.Down := true else tbMove.Down := true; UpdateDisplay; --- 2255,2259 ---- end; chkUseXFormColor.checked := UseTransformColors; ! if ExtendedEdit then tbExtendedEdit.Down := true else tbMove.Down := true; UpdateDisplay; *************** *** 3535,3552 **** if mouseOverCorner >= 0 then begin case mouseOverCorner of ! 0: ResetEdgeScale(0); //btnXcoefsClick(Sender); ! 1: btnOcoefsClick(Sender); ! 2: ResetEdgeScale(2); //btnYcoefsClick(Sender); end; end else if mouseOverEdge >= 0 then begin ! case mouseOverEdge of ! 0: if editMode = modeScale then ResetEdgeScale(0) else ResetEdgeRotation(0); ! 1: if editMode = modeScale then ResetEdgeScale(2) else ResetEdgeRotation(2); 2: mnuResetTrgScaleClick(Sender); end; end else if mouseOverWidget >= 0 then begin ! mnuResetTrgRotationClick(Sender); end else case editMode of --- 3564,3591 ---- if mouseOverCorner >= 0 then begin case mouseOverCorner of ! 0: if editMode = modeRotate then ResetAxisRotation(0) else ResetAxisScale(0); ! 1: if editMode = modeRotate then ResetAxisRotation(1) ! else if editMode = modeScale then ResetAxisScale(1) else btnOcoefsClick(Sender); ! 2: if editMode = modeRotate then ResetAxisRotation(2) else ResetAxisScale(2); end; end else if mouseOverEdge >= 0 then begin ! if AxisLock then begin ! if (editMode = modeScale) or (mouseOverEdge = 2)then ! mnuResetTrgScaleClick(Sender) ! else ! mnuResetTrgRotationClick(Sender); ! end ! else case mouseOverEdge of ! 0: if editMode = modeScale then ResetAxisScale(0) else ResetAxisRotation(0); ! 1: if editMode = modeScale then ResetAxisScale(2) else ResetAxisRotation(2); 2: mnuResetTrgScaleClick(Sender); end; end else if mouseOverWidget >= 0 then begin ! case editMode of ! modeScale: mnuResetTrgScaleClick(Sender); ! else mnuResetTrgRotationClick(Sender); ! end; end else case editMode of *************** *** 3566,3570 **** procedure TEditForm.tbEditModeClick(Sender: TObject); begin ! AutoEditMode := (Sender = tbAutoEditMode); if Sender = tbRotate then begin --- 3605,3609 ---- procedure TEditForm.tbEditModeClick(Sender: TObject); begin ! // ExtendedEdit := (Sender = tbExtendedEdit); if Sender = tbRotate then begin *************** *** 3585,3588 **** --- 3624,3642 ---- end; + procedure TEditForm.tbExtendedEditClick(Sender: TObject); + begin + ExtendedEdit := not ExtendedEdit; + tbExtendedEdit.Down := ExtendedEdit; + TriangleView.Invalidate; + end; + + procedure TEditForm.tbAxisLockClick(Sender: TObject); + begin + if Sender = chkAxisLock then AxisLock := chkAxisLock.Checked + else AxisLock := not AxisLock; + tbAxisLock.Down := AxisLock; + chkAxisLock.Checked := AxisLock; + end; + procedure TEditForm.tbFullViewClick(Sender: TObject); begin *************** *** 3904,3907 **** --- 3958,3962 ---- PivotMode := pivotLocal; btnPivotMode.Caption := 'Local Pivot'; + tbPivotMode.Down := false; end else *************** *** 3909,3912 **** --- 3964,3968 ---- PivotMode := pivotWorld; btnPivotMode.Caption := 'World Pivot'; + tbPivotMode.Down := true; end; *************** *** 4271,4275 **** end; ! procedure TEditForm.ResetEdgeRotation(n: integer); var dx, dy, d: double; --- 4327,4331 ---- end; ! procedure TEditForm.ResetAxisRotation(n: integer); var dx, dy, d: double; *************** *** 4279,4301 **** with MainTriangles[SelectedTriangle] do begin ! dx := x[n] - x[1]; ! dy := y[n] - y[1]; ! a := round( arctan2(dy, dx) / (pi/2) ); ! d := Hypot(dx, dy); ! // if xx*yy - yx*xy >= 0 then da := 1 else da := -1; ! // if ax = ay then ay := ay + da ! // else if abs(ax-ay) = 2 then ay := ay - da; ! ! nx := x[1] + d*cos(a*pi/2); ! ny := y[1] + d*sin(a*pi/2); ! if (x[n] = nx) and (y[n] = ny) then exit; ! MainForm.UpdateUndo; ! x[n] := nx; ! y[n] := ny; ! UpdateFlame(True); end; end; ! procedure TEditForm.ResetEdgeScale(n: integer); var dx, dy, d: double; --- 4335,4372 ---- with MainTriangles[SelectedTriangle] do begin ! if n = 1 then ! begin ! d := Hypot(x[1], y[1]); ! if d = 0 then exit; ! a := round( arctan2(y[1], x[1]) / (pi/2) ); ! nx := d*cos(a*pi/2); ! ny := d*sin(a*pi/2); ! if (x[1] = nx) and (y[1] = ny) then exit; ! MainForm.UpdateUndo; ! x[1] := nx; ! y[1] := ny; ! x[0] := x[1] + xx; ! y[0] := y[1] + xy; ! x[2] := x[1] + yx; ! y[2] := y[1] + yy; ! UpdateFlame(True); ! end ! else begin ! dx := x[n] - x[1]; ! dy := y[n] - y[1]; ! a := round( arctan2(dy, dx) / (pi/2) ); ! d := Hypot(dx, dy); ! nx := x[1] + d*cos(a*pi/2); ! ny := y[1] + d*sin(a*pi/2); ! if (x[n] = nx) and (y[n] = ny) then exit; ! MainForm.UpdateUndo; ! x[n] := nx; ! y[n] := ny; ! UpdateFlame(True); ! end; end; end; ! procedure TEditForm.ResetAxisScale(n: integer); var dx, dy, d: double; *************** *** 4304,4323 **** with MainTriangles[SelectedTriangle] do begin ! dx := x[n] - x[1]; ! dy := y[n] - y[1]; ! d := Hypot(dx, dy); ! if d <> 0 then begin ! nx := x[1] + dx / d; ! ny := y[1] + dy / d; end else begin ! nx := x[1] + ifthen(n=0, 1, 0); ! ny := y[1] + ifthen(n=2, 1, 0); end; - if (x[n] = nx) and (y[n] = ny) then exit; - MainForm.UpdateUndo; - x[n] := nx; - y[n] := ny; - UpdateFlame(True); end; end; --- 4375,4412 ---- with MainTriangles[SelectedTriangle] do begin ! if n = 1 then ! begin ! d := Hypot(x[1], y[1]); ! if d = 0 then exit; ! nx := x[1]/d; ! ny := y[1]/d; ! if (x[1] = nx) and (y[1] = ny) then exit; ! MainForm.UpdateUndo; ! x[1] := nx; ! y[1] := ny; ! x[0] := x[1] + xx; ! y[0] := y[1] + xy; ! x[2] := x[1] + yx; ! y[2] := y[1] + yy; ! UpdateFlame(True); end else begin ! dx := x[n] - x[1]; ! dy := y[n] - y[1]; ! d := Hypot(dx, dy); ! if d <> 0 then begin ! nx := x[1] + dx / d; ! ny := y[1] + dy / d; ! end ! else begin ! nx := x[1] + ifthen(n=0, 1, 0); ! ny := y[1] + ifthen(n=2, 1, 0); ! end; ! if (x[n] = nx) and (y[n] = ny) then exit; ! MainForm.UpdateUndo; ! x[n] := nx; ! y[n] := ny; ! UpdateFlame(True); end; end; end; Index: Editor.dfm =================================================================== RCS file: /cvsroot/apophysis/2.10/Source/Editor.dfm,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** Editor.dfm 13 Apr 2006 16:14:32 -0000 1.35 --- Editor.dfm 15 Apr 2006 15:50:26 -0000 1.36 *************** *** 82,86 **** Left = 1 Top = 1 ! Width = 432 Height = 22 Align = alLeft --- 82,86 ---- Left = 1 Top = 1 ! Width = 552 Height = 22 [...1707 lines suppressed...] + Left = 217 + Top = 33 + object mnuExtEditMove: TMenuItem + Caption = 'Move' + end + object mnuExtEditRotate: TMenuItem + Caption = 'Rotate' + end + object mnuExtEditScale: TMenuItem + Caption = 'Scale' + end + object N9: TMenuItem + Caption = '-' + end + object mnuExtEditOff: TMenuItem + Caption = 'Off' + RadioItem = True + end + end end Index: Options.pas =================================================================== RCS file: /cvsroot/apophysis/2.10/Source/Options.pas,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Options.pas 13 Apr 2006 16:21:32 -0000 1.12 --- Options.pas 15 Apr 2006 15:50:26 -0000 1.13 *************** *** 202,209 **** pnlHelpersColor: TPanel; rgReferenceMode: TRadioGroup; ! chkAutoEditMode: TCheckBox; chkPlaysound: TCheckBox; btnPlay: TSpeedButton; Label44: TLabel; procedure btnCancelClick(Sender: TObject); procedure FormShow(Sender: TObject); --- 202,210 ---- pnlHelpersColor: TPanel; rgReferenceMode: TRadioGroup; ! chkExtendedEdit: TCheckBox; chkPlaysound: TCheckBox; btnPlay: TSpeedButton; Label44: TLabel; + chkAxisLock: TCheckBox; procedure btnCancelClick(Sender: TObject); procedure FormShow(Sender: TObject); *************** *** 296,300 **** else cbNrTheads.text := intTostr(NrTreads); ! chkAutoEditMode.Checked := AutoEditMode; chkPlaySound.Checked := PlaySoundOnRenderComplete; --- 297,302 ---- else cbNrTheads.text := intTostr(NrTreads); ! chkExtendedEdit.Checked := ExtEditEnabled; ! chkAxisLock.Checked := TransformAxisLock; chkPlaySound.Checked := PlaySoundOnRenderComplete; *************** *** 414,418 **** // Editor ReferenceMode := rgReferenceMode.ItemIndex; ! AutoEditMode := chkAutoEditMode.Checked; { Display tab } --- 416,421 ---- // Editor ReferenceMode := rgReferenceMode.ItemIndex; ! ExtEditEnabled := chkExtendedEdit.Checked; ! TransformAxisLock := chkAxisLock.Checked; { Display tab } Index: Regstry.pas =================================================================== RCS file: /cvsroot/apophysis/2.10/Source/Regstry.pas,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** Regstry.pas 5 Apr 2006 11:10:39 -0000 1.15 --- Regstry.pas 15 Apr 2006 15:50:26 -0000 1.16 *************** *** 286,297 **** end; - // --- tmp fix for pre-d4 problem --- - - if Registry.ValueExists('VariationOptions') then - if Registry.GetDataType('VariationOptions') <> rdInteger then - Registry.WriteInteger('VariationOptions', 262143); - - // --- tmp fix for pre-d4 problem --- - if Registry.ValueExists('VariationOptions') then begin --- 286,289 ---- *************** *** 639,646 **** else ReferenceTriangleColor := $7f7f7f; ! if Registry.ValueExists('AutoEditMode') then ! AutoEditMode := Registry.ReadBool('AutoEditMode') ! else AutoEditMode := true; ! end else begin --- 631,640 ---- else ReferenceTriangleColor := $7f7f7f; ! if Registry.ValueExists('ExtendedEdit') then ! ExtEditEnabled := Registry.ReadBool('ExtendedEdit') ! else ExtEditEnabled := true; ! if Registry.ValueExists('LockTransformAxis') then ! TransformAxisLock := Registry.ReadBool('LockTransformAxis') ! else TransformAxisLock := true; end else begin *************** *** 1008,1012 **** Registry.WriteInteger('HelpersColor', HelpersColor); Registry.WriteInteger('ReferenceTriangleColor', ReferenceTriangleColor); ! Registry.WriteBool('AutoEditMode', AutoEditMode); end; { Display } --- 1002,1007 ---- Registry.WriteInteger('HelpersColor', HelpersColor); Registry.WriteInteger('ReferenceTriangleColor', ReferenceTriangleColor); ! Registry.WriteBool('ExtendedEdit', ExtEditEnabled); ! Registry.WriteBool('LockTransformAxis', TransformAxisLock); end; { Display } Index: Options.dfm =================================================================== RCS file: /cvsroot/apophysis/2.10/Source/Options.dfm,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Options.dfm 13 Apr 2006 16:21:32 -0000 1.12 --- Options.dfm 15 Apr 2006 15:50:26 -0000 1.13 *************** *** 357,370 **** TabOrder = 1 end ! object chkAutoEditMode: TCheckBox Left = 160 Top = 80 ! Width = 161 Height = 17 ! Caption = 'Prefer "Extended" edit mode' Checked = True State = cbChecked TabOrder = 2 end end object DisplayPage: TTabSheet --- 357,380 ---- TabOrder = 1 end ! object chkExtendedEdit: TCheckBox Left = 160 Top = 80 ! Width = 145 Height = 17 ! Caption = 'Extended edit mode' Checked = True State = cbChecked TabOrder = 2 end + object chkAxisLock: TCheckBox + Left = 160 + Top = 100 + Width = 145 + Height = 17 + Caption = 'Lock transform axis' + Checked = True + State = cbChecked + TabOrder = 3 + end end object DisplayPage: TTabSheet Index: Global.pas =================================================================== RCS file: /cvsroot/apophysis/2.10/Source/Global.pas,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** Global.pas 5 Apr 2006 11:10:38 -0000 1.18 --- Global.pas 15 Apr 2006 15:50:26 -0000 1.19 *************** *** 86,90 **** EditorBkgColor, ReferenceTriangleColor: integer; GridColor1, GridColor2, HelpersColor: integer; ! AutoEditMode: boolean; { Display } defSampleDensity, defPreviewDensity: Double; --- 86,90 ---- EditorBkgColor, ReferenceTriangleColor: integer; GridColor1, GridColor2, HelpersColor: integer; ! ExtEditEnabled, TransformAxisLock: boolean; { Display } defSampleDensity, defPreviewDensity: Double; |