//--------------------------------------------------------------------------- #include #include #pragma hdrstop #include "FullView.h" #include "Define.h" #include "Grid_F.h" #include "MainImage.h" #include "MoveCopy_F.h" #include "MainMenu.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "TPStretchImage" #pragma link "TNumEdit" #pragma link "RzButton" #pragma link "RzTrkBar" #pragma link "RzBckgnd" #pragma resource "*.dfm" //--------------------------------------------------------------------------- #define IDS_FORMCAPTION StringTable[0] #define IDS_TAPELINE StringTable[1] #define IDS_SUPER StringTable[2] #define IDS_SUPER_OFF StringTable[3] #define IDS_SUPER_NORMAL StringTable[4] #define IDS_SUPER_GAUZE StringTable[5] #define IDS_SUPER_OVERLAP StringTable[6] #define IDS_ANGLE StringTable[7] #define IDS_ANGLE_ROTATE StringTable[8] TFullViewForm *FullViewForm; //--------------------------------------------------------------------------- __fastcall TFullViewForm::TFullViewForm(TComponent* Owner) : TForm(Owner)//TPenAndNaviDockForm(Owner) { //======================================================= StringTable.Create(DirectoryBin, Language, "FullView"); SetFont(); Caption = IDS_FORMCAPTION; LabelZoom->Caption = IDS_COMMON_ZOOM; //======================================================= itemOBLIQUE->Caption = IDS_COMMON_OBLIQUE; itemVERTICAL->Caption = IDS_COMMON_VERTICAL; itemHORIZONTAL->Caption = IDS_COMMON_HORIZONTAL; itemROff->Caption = IDS_SUPER_OFF; itemANGLEVIEW->Caption = IDS_COMMON_ON; itemANGLEROTATE->Caption = IDS_ANGLE_ROTATE; itemAOff->Caption = IDS_SUPER_OFF; sbSOff->Hint = IDS_SUPER_OFF; sbSNormal->Hint = IDS_SUPER_NORMAL; sbSGauze->Hint = IDS_SUPER_GAUZE; sbSOverlap->Hint = IDS_SUPER_OVERLAP; sbGrid->Hint = IDS_COMMON_GRID; rzmenuBtnRuler->Hint = IDS_TAPELINE; rzmenuBtnAngle->Hint = IDS_ANGLE; this->Width = 210; this->Height = 161; } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::FormClose(TObject *Sender, TCloseAction &Action) { ExitForm(); Visible = false; if (FOnUpdateMenu) FOnUpdateMenu(Sender); } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::FormCreate(TObject *Sender) { TGrid g; TIniFile *IniFile = new TIniFile(AppDataItem+"\\status.ini"); if (IniFile) { GridColor = (TColor) IniFile->ReadInteger("Grid", "Color", clBlack); Grid.Unit = (TUnit) IniFile->ReadInteger("Grid", "Unit", 0); Grid.X = IniFile->ReadFloat("Grid", "GapX", 1.0); Grid.Y = IniFile->ReadFloat("Grid", "GapY", 1.0); GridMark = IniFile->ReadInteger("Grid", "LinesPerSection", 0); GridMarkColor = (TColor) IniFile->ReadInteger("Grid", "SectionColor", clBlack); delete IniFile; } else { GridColor = clBlack; Grid.Unit = uDot; Grid.X = 1.0; Grid.Y = 1.0; GridMark = 0; GridMarkColor = clBlack; } SectionNUM = 0; Tapeline = OFF; bAngle = false; Super = sOff; bRatio = false; ratio = 1; bDraw = false; FOverlapDensity = 32; FOnUpdateMenu = NULL; OverlapBitmap = OverlapBack = NULL; Snap_Interval = 9; bRepaint = false; } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::FormDestroy(TObject *Sender) { ExitOverlapChange(); } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::FormPaint(TObject *Sender) { if(MainImageForm)Image->OnPaint = MainImageForm->iMainImage->FullViewPaint; } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::FormResize(TObject *Sender) { if (MainImage) { if (MainImage->uBitmap->Width>0 && MainImage->uBitmap->Height>0) { RatioCalculate(); View(); } } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::ImageMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { MainImageForm->iMainImageChange(); if (Button==mbLeft) { FocusPosition(X, Y); InFocus = true; } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::ImageMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if (InFocus) { // ¼Óµµ °³¼±À» À§ÇØ ¿òÁ÷ÀÏ °æ¿ì (GDI·Î ±×¸°´Ù - ¿ÀºêÁ§Æ® À̵¿, ĵ¹ö½º À̵¿ µîÀ» À̵¿ÇÒ ¶§) - by monkman (2005.07.11) if (MainImageForm) MainImageForm->NVector->bVectorMove = true; FocusPosition(X, Y); MainImageForm->SetCaretPositionForTextBox(); // For TextBox by maxleo21c (04.10.30) } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::ImageMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if (InFocus) { // // GDI+·Î ±×¸®µµ·Ï µ¹·Á³õ´Â´Ù - by monkman (2008.10.20) // if (MainImageForm && Shift.Contains(ssCtrl) == false) { // MainImageForm->tmVectorMoveDraw->Enabled = true; // } if (MainImageForm) MainImageForm->NVector->bVectorMove = false; FocusPosition(X, Y); MainImageForm->SetCaretPositionForTextBox(); // For TextBox by maxleo21c (04.10.30) MainImageForm->iMainImage->Repaint(); InFocus = false; } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::ImagePaintEnd(TObject *Sender) { eBox(rcView); bDraw = true; if(MainImageForm && MainImageForm->iMainImage) { MainImageForm->iMainImage->OnFullViewRectPaint=FullViewRectPaint; } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::sbGridClick(TObject *Sender) { TGridForm *Form = NULL; TTexpiaBitmap *bm1 = NULL, *bm2 = NULL; Byte *bp1, *bp2, mm; TPException ec = EC_NONE; if ((Form = new TGridForm(NULL)) == NULL) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } Form->DotsPerInch = MainImageForm->CanvasInfor.DotsPerInch; Form->GridColor = MainImage->GridColor; Form->Gap = Grid; Form->LinesPerSection = MainImage->GridMark; Form->SectionColor = MainImage->GridMarkColor; Form->Unit = MainImageForm->CurrentUnit; Form->seSectionNumber->Value = SectionNUM; Form->View(NULL); if (Form->ShowModal()==mrOk) { GridColor = Form->GridColor; Grid = Form->Gap; GridMark = Form->LinesPerSection; GridMarkColor = Form->SectionColor; SectionNUM = Form->seSectionNumber->Value; SetGrid(); MainImageForm->iMainImageChange(); } delete Form; return; fail: if (Form) { if (bm1) { bm1->StopScanLine(); delete bm1; } if (bm2) delete bm2; delete Form; } EXCEPTION_MESSAGE_OK(ec); } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::tbOverlapChange(TObject *Sender) { eOverlap->Value = tbOverlap->Position; FOverlapDensity = (tbOverlap->Position / 100.0) * 63.0; #if defined(TEXSTYLIST) MainImageForm->OverlapChange(); #endif MainImageForm->iMainImageChange(); } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::eOverlapKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { TNumEdit *s; s = (TNumEdit *)Sender; if (Key == VK_RETURN) { if (0 > s->IntValue) { s->Value = 0; } if (100 < s->IntValue) { s->Value = 100; } tbOverlap->Position = s->IntValue; FOverlapDensity = (tbOverlap->Position / 100.0) * 63.0; #if defined(TEXSTYLIST) MainImageForm->OverlapChange(); #endif MainImageForm->iMainImageChange(); g_FocusControl->SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::eOverlapMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { TNumEdit *s; s = (TNumEdit *)Sender; s->SetFocus(); s->SelectAll(); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // Private Method //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- void __fastcall TFullViewForm::eBox(TRect r) { TPenMode pm; TColor cl; TBrushStyle bs; #ifdef TPDEBUG if (Image==NULL) { SHOWDEBUG; } if (Image->Canvas==NULL) { SHOWDEBUG; } #endif if (r.Right-r.Left<=0 || r.Bottom-r.Top<=0) return; pm = Image->Canvas->Pen->Mode; cl = Image->Canvas->Pen->Color; bs = Image->Canvas->Brush->Style; Image->Canvas->Pen->Mode = pmXor; Image->Canvas->Pen->Color = clWhite; Image->Canvas->Brush->Style = bsClear; Image->Canvas->Rectangle(r.Left, r.Top, r.Right, r.Bottom); Image->Canvas->Pen->Mode = pm; Image->Canvas->Pen->Color = cl; Image->Canvas->Brush->Style = bs; } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::FocusPosition(int X, int Y) { int mx, my, dx, dy; if (MainImage) { if (bDraw) { eBox(rcView); bDraw = false; } if (X<0) X = 0; else if (X>Image->Width) X = Image->Width; if (Y<0) Y = 0; else if (Y>Image->Height) Y = Image->Height; mx = MainImage->Width*MainImage->ZoomOut/MainImage->ZoomIn; if (mx>MainImage->uBitmap->Width) mx = MainImage->uBitmap->Width; if (X<10) { dx = 0; } else if (X>Image->Width-10) { dx = MainImage->uBitmap->Width-mx; } else { if (Image->Width != 20) { // Division by Zero ¿¡·¯ ¼öÁ¤ - by monkman (2009.04.06) dx = (MainImage->Bitmap->Width-mx)*(X-10)/(Image->Width-20); } else { dx = (MainImage->Bitmap->Width-mx)*(X-10); } } mx = bRatio ? dx*ratio : dx/ratio; my = MainImage->Height*MainImage->ZoomOut/MainImage->ZoomIn; if (my>MainImage->uBitmap->Height) my = MainImage->uBitmap->Height; if (MainImage->uBitmap->CoordinateSystem==csTopLeft) { if (Y<10) { dy = 0; } else if (Y>Image->Height-10) { dy = MainImage->uBitmap->Height-my; } else { if (Image->Height != 20) { // Division by Zero ¿¡·¯ ¼öÁ¤ - by monkman (2009.04.06) dy = (MainImage->Bitmap->Height-my)*(Y-10)/(Image->Height-20); } else { dy = (MainImage->Bitmap->Height-my)*(Y-10); } } my = bRatio ? dy*ratio : dy/ratio; rcView = Rect(mx, my, mx+ViewSize.x, my+ViewSize.y); } else { if (Y<10) { dy = MainImage->uBitmap->Height-my; } else if (Y>Image->Height-10) { dy = 0; } else { if (Image->Height != 20) { // Division by Zero ¿¡·¯ ¼öÁ¤ - by monkman (2009.04.06) dy = (MainImage->Bitmap->Height-my)*(Image->Height-Y-10)/(Image->Height-20); } else { dy = (MainImage->Bitmap->Height-my)*(Image->Height-Y-10); } } my = bRatio ? dy*ratio : dy/ratio; rcView = Rect(mx, Image->Height-my-ViewSize.y, mx+ViewSize.x, Image->Height-my); } eBox(rcView); bDraw = true; if (InFocus) MainImage->SetPosition(dx, dy); } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::ExitLocate() { if (Tapeline > OFF) { if (step>0) { MainImageForm->DrawLineLocate(First, Second,0); MainImageForm->TempLabel->Visible = false; IsDraw = false; MainImageForm->iMainImage->OnPaintLocate = NULL;/////////////////by jeegeo step = 0; } } } //--------------------------------------------------------------------------- /* void TFullViewForm::WMEXITSIZEMOVE(TMessage &msg) { if ((Left <= MainForm->FullViewFormPos.x + 100) && (Left >= MainForm->FullViewFormPos.x - 100)) { if ((Top <= MainForm->FullViewFormPos.y + 100) && (Top >= MainForm->FullViewFormPos.y - 100)) { Top = MainForm->FullViewFormPos.y; Left = MainForm->FullViewFormPos.x; } } } */ //--------------------------------------------------------------------------- void __fastcall TFullViewForm::RatioCalculate() { int width = MainImage->uBitmap->Width, height = MainImage->uBitmap->Height; if (MainImage) { ratio = 1; if (Panel->Width-8Height-8Width-8>=width/ratio && Panel->Height-8>=height/ratio) { break; } ratio++; } bRatio = false; } else { while (true) { if (Panel->Width-8Height-8SetZoom(ratio, 1); Image->Width = width*ratio; Image->Height = height*ratio; ViewSize.x = MainImage->Width*MainImage->ZoomOut/MainImage->ZoomIn*ratio; ViewSize.y = MainImage->Height*MainImage->ZoomOut/MainImage->ZoomIn*ratio; } else { Image->SetZoom(1, ratio); Image->Width = width/ratio; Image->Height = height/ratio; ViewSize.x = MainImage->Width*MainImage->ZoomOut/MainImage->ZoomIn/ratio; ViewSize.y = MainImage->Height*MainImage->ZoomOut/MainImage->ZoomIn/ratio; } if (MainImage->uBitmap->CoordinateSystem==csTopLeft) { Image->Top = 4; } else { Image->Top = Panel->Height-Image->Height-4; } } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::SetGrid() { double x, y; if (MainImage) { switch (Grid.Unit) { case uInch: x = Grid.X*MainImageForm->CanvasInfor.DotsPerInch; y = Grid.Y*MainImageForm->CanvasInfor.DotsPerInch; break; case uCm: x = Grid.X*MainImageForm->CanvasInfor.DotsPerInch/2.54; y = Grid.Y*MainImageForm->CanvasInfor.DotsPerInch/2.54; break; default: x = Grid.X; y = Grid.Y; break; } MainImage->GridColor = GridColor; MainImage->GridGapX = x; MainImage->GridGapY = y; MainImage->GridMark = GridMark; MainImage->GridMarkColor = GridMarkColor; if(MainImageForm) if (MainImageForm->CurrentUnit==uDot) { stGridX->Caption = Format("%f", OPENARRAY(TVarRec, (x))); stGridY->Caption = Format("%f", OPENARRAY(TVarRec, (y))); } else if (MainImageForm->CurrentUnit==uInch) { stGridX->Caption = Format("%f", OPENARRAY(TVarRec, (x/MainImageForm->CanvasInfor.DotsPerInch))); stGridY->Caption = Format("%f", OPENARRAY(TVarRec, (y/MainImageForm->CanvasInfor.DotsPerInch))); } else if (MainImageForm->CurrentUnit==uCm) { stGridX->Caption = Format("%f", OPENARRAY(TVarRec, (2.54*x/MainImageForm->CanvasInfor.DotsPerInch))); stGridY->Caption = Format("%f", OPENARRAY(TVarRec, (2.54*y/MainImageForm->CanvasInfor.DotsPerInch))); } } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::FullViewRectPaint(HDC dcMemV, int sx, int sy, int pw, int ph){ // convert by celberus eBox(rcView); // monkman BitBlt(Image->Canvas->Handle, sx, sy, pw, ph, dcMemV, sx, sy, SRCCOPY); // monkman //BitBlt(Image->Canvas->Handle, 0, 0, Image->Width, Image->Height, dcMemV, 0, 0, SRCCOPY); // monkman eBox(rcView); /* int vw = pw*MainImageForm->iMainImage->ZoomIn/MainImageForm->iMainImage->ZoomOut; int vh = ph*MainImageForm->iMainImage->ZoomIn/MainImageForm->iMainImage->ZoomOut; int fvsx=Image->Width*sx/MainImageForm->iMainImage->uBitmap->Width; int fvsy=Image->Height*sy/MainImageForm->iMainImage->uBitmap->Height; int fvpw=Image->Width*pw/MainImageForm->iMainImage->uBitmap->Width; int fvph=Image->Height*ph/MainImageForm->iMainImage->uBitmap->Height; eBox(rcView); SetStretchBltMode(Image->Canvas->Handle, COLORONCOLOR); StretchBlt(Image->Canvas->Handle, fvsx, fvsy, fvpw, fvph, dcMemV,0,0,vw,vh, SRCCOPY); eBox(rcView);*/ } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::RotateWorkArea() { TMoveCopyForm* smmMoveCopyMenu = new TMoveCopyForm(MainImageForm); smmMoveCopyMenu->Parent = MainImageForm; smmMoveCopyMenu->InitForm(); smmMoveCopyMenu->FunctionClick(smmMoveCopyMenu->rzrbMove); smmMoveCopyMenu->TypeClick(smmMoveCopyMenu->rzmtbtRotate); smmMoveCopyMenu->rzcbRotate->Text = diffAngle; int original_point_x = (MainImageForm->WorkArea->Range.left + MainImageForm->WorkArea->Range.right) / 2; int original_point_y = (MainImageForm->WorkArea->Range.top + MainImageForm->WorkArea->Range.bottom) / 2; smmMoveCopyMenu->btnRotateRunClick(NULL); smmMoveCopyMenu->MoveCopyMouseDown(original_point_x, original_point_y); delete smmMoveCopyMenu; } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- // Public Method //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- void __fastcall TFullViewForm::InitForm(TPItemImage *ti, TTexpiaBitmap *tb) { if (Visible) { ExitForm(); InFocus = false; Tapeline = OFF; if (MainImage != ti || bRepaint) { MainImage = ti; if (MainImage) { Image->OnPaint = MainImage->FullViewPaint; FormResize(this); SetZoom(); SetGrid(); } else { Image->OnPaint = NULL; } Image->Repaint(); bRepaint = false; } } isZKeyDown = false; if ((MainImage != ti) && MainImageForm) { OverlapBitmap = MainImageForm->OverlapBitmap; OverlapBack = MainImageForm->OverlapBack; OverlapRect = MainImageForm->OverlapRect; preusecolor = MainImageForm->preusecolor; } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::RepaintForm(TPItemImage *ti)//ÀåÁø¸¸: ³ª¸ÓÁö ³öµÎ°í È­¸é¸¸ ¾÷µ¥ÀÌÆ®Çϱâ À§ÇØ { if (Visible) { MainImage = ti; if (MainImage) { Image->OnPaint = MainImage->FullViewPaint; FormResize(this); SetZoom(); SetGrid(); } else { Image->OnPaint = NULL; } Image->Repaint(); } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::ExitForm() { ExitLocate(); Tapeline = OFF; } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::SetFont() { SetSmallFont(Font); } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::View() { int sx, sy, dy; Byte *src, *dst; WORD *swp, *dwp; bool ret; if (MainImage) { if (bDraw) { eBox(rcView); bDraw = false; } if (bRatio) { if (Panel->Width-8uBitmap->Width*ratio || Panel->Height-8uBitmap->Height*ratio) { RatioCalculate(); } sx = MainImage->PositionX*ratio; sy = MainImage->PositionY*ratio; } else { if (Panel->Width-8uBitmap->Width/ratio || Panel->Height-8uBitmap->Height/ratio) { RatioCalculate(); } sx = MainImage->PositionX/ratio; sy = MainImage->PositionY/ratio; } if (MainImage->uBitmap->CoordinateSystem==csTopLeft) { rcView = Rect(sx, sy, sx+ViewSize.x, sy+ViewSize.y); } else { rcView = Rect(sx, Image->Height-sy-ViewSize.y, sx+ViewSize.x, Image->Height-sy); } eBox(rcView); bDraw = true; Image->Invalidate(); } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::SetPositionX(int v) { int p; if (bDraw) { eBox(rcView); bDraw = false; } p = bRatio ? v*ratio : v/ratio; rcView.Left = p; rcView.Right = p+ViewSize.x; eBox(rcView); bDraw = true; } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::SetPositionY(int v) { int p; if (MainImage) { if (bDraw) { eBox(rcView); bDraw = false; } if (MainImage->uBitmap->CoordinateSystem==csTopLeft) { p = bRatio ? v*ratio : v/ratio; rcView.Top = p; rcView.Bottom = p+ViewSize.y; } else { p = Image->Height-(bRatio ? v*ratio : v/ratio); rcView.Top = p-ViewSize.y; rcView.Bottom = p; } eBox(rcView); bDraw = true; } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::SetSize() { if (MainImage) { if (bRatio) { ViewSize.x = MainImage->Width*MainImage->ZoomOut/MainImage->ZoomIn*ratio; ViewSize.y = MainImage->Height*MainImage->ZoomOut/MainImage->ZoomIn*ratio; } else { ViewSize.x = MainImage->Width*MainImage->ZoomOut/MainImage->ZoomIn/ratio; ViewSize.y = MainImage->Height*MainImage->ZoomOut/MainImage->ZoomIn/ratio; } View(); } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::SetZoom() { if (MainImage) { if (bRatio) { ViewSize.x = MainImage->Width*MainImage->ZoomOut/MainImage->ZoomIn*ratio; ViewSize.y = MainImage->Height*MainImage->ZoomOut/MainImage->ZoomIn*ratio; } else { ViewSize.x = MainImage->Width*MainImage->ZoomOut/MainImage->ZoomIn/ratio; ViewSize.y = MainImage->Height*MainImage->ZoomOut/MainImage->ZoomIn/ratio; } switch (MainImage->ZoomIn) { case 1: switch (MainImage->ZoomOut) { case 1: TrackBar->Position = 8; break; case 2: TrackBar->Position = 6; break; case 3: TrackBar->Position = 5; break; case 4: TrackBar->Position = 4; break; case 6: TrackBar->Position = 3; break; case 8: TrackBar->Position = 2; break; case 12: TrackBar->Position = 1; break; case 16: TrackBar->Position = 0; break; } break; case 2: switch (MainImage->ZoomOut) { case 1: TrackBar->Position = 10; break; case 3: TrackBar->Position = 7; break; } break; case 3: switch (MainImage->ZoomOut) { case 1: TrackBar->Position = 11; break; case 2: TrackBar->Position = 9; break; } break; case 4: TrackBar->Position = 12; break; case 6: TrackBar->Position = 13; break; case 8: TrackBar->Position = 14; break; case 12: TrackBar->Position = 15; break; case 16: TrackBar->Position = 16; break; } View(); } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::iMainImageChange() { if (IsDraw) { MainImageForm->TempLabel->Left = 0; MainImageForm->TempLabel->Top = 0; MainImageForm->TempLabel->Caption = ""; IsDraw = false; MainImageForm->iMainImage->OnPaintLocate = NULL;/////////////////by jeegeo } } //--------------------------------------------------------------------------- bool __fastcall TFullViewForm::iMainImageMouseDown(TObject *Sender, int X, int Y) { if (Tapeline == OFF) return true; if((Tapeline == ANGLEVIEW || Tapeline == ANGLEROTATE) && isZKeyDown){ if (step == 1) { int delta_x = (X-First.x); if(delta_x<0) delta_x = -delta_x; int delta_y = (Y-First.y); if(delta_y<0) delta_y = -delta_y; if( delta_x0) { switch (Tapeline) { case HORIZONTAL: Second = Point(X, First.y); break; case VERTICAL: Second = Point(First.x, Y); break; case OBLIQUE: Second = Point(X, Y); break; } MainImageForm->DrawLineLocate(First, Second); MainImageForm->TempLabel->Visible = false; IsDraw = false; MainImageForm->iMainImage->OnPaintLocate = NULL;/////////////////by jeegeo step = 0; } else { First = Point(X, Y); Second = First; MainImageForm->DrawLineLocate(First, Second); MainImageForm->TempLabel->Visible = true; IsDraw = true; step = 1; } } else { if (step == 2) { MainImageForm->DrawLineLocate(First, Second); MainImageForm->TempLabel->Visible = false; IsDraw = false; MainImageForm->iMainImage->OnPaintLocate = NULL;/////////////////by jeegeo step = 0; if(Tapeline == ANGLEROTATE && MainImageForm->WorkArea->Mask) RotateWorkArea(); } else if (step == 1) { Second = Point(X, Y); Third = Second; MainImageForm->DrawLineLocate(Second, Third); MainImageForm->TempLabel->Visible = true; IsDraw = true; step = 2; } else { // step == 0 First = Point(X, Y); Second = First; MainImageForm->DrawLineLocate(First, Second); IsDraw = true; step = 1; } } return false; } //--------------------------------------------------------------------------- bool __fastcall TFullViewForm::iMainImageMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { int lx, ly, sx, sy; TSize size; double Len; if((Tapeline == ANGLEVIEW || Tapeline == ANGLEROTATE) && isZKeyDown){ if (step == 1) { int delta_x = (X-First.x); if(delta_x<0) delta_x = -delta_x; int delta_y = (Y-First.y); if(delta_y<0) delta_y = -delta_y; if( delta_x0) { if (IsDraw) { MainImageForm->DrawLineLocate(First, Second); } switch (Tapeline) { case HORIZONTAL: Second = Point(X, First.y); lx = Second.x-First.x; Len = abs(lx); switch (MainImageForm->CurrentUnit) { case uInch: Len = Len/MainImageForm->CanvasInfor.DotsPerInch; break; case uCm: Len = 2.54*Len/MainImageForm->CanvasInfor.DotsPerInch; break; } MainImageForm->TempLabel->Caption = Format("%f", OPENARRAY(TVarRec, (Len))); size.cx = MainImageForm->TempLabel->Width; size.cy = MainImageForm->TempLabel->Height; sx = MainImage->BitmapToCanvasX(Second.x); sy = MainImage->BitmapToCanvasY(Second.y); if (lx>0) sx = sx-5-size.cx; else sx = sx+5; if (sy>MainImage->Height/2) sy = sy-5-size.cy; else sy = sy+5; break; case VERTICAL: Second = Point(First.x, Y); ly = Second.y-First.y; Len = abs(ly); switch (MainImageForm->CurrentUnit) { case uInch: Len = Len/MainImageForm->CanvasInfor.DotsPerInch; break; case uCm: Len = 2.54*Len/MainImageForm->CanvasInfor.DotsPerInch; break; } MainImageForm->TempLabel->Caption = Format("%f", OPENARRAY(TVarRec, (Len))); size.cx = MainImageForm->TempLabel->Width; size.cy = MainImageForm->TempLabel->Height; sx = MainImage->BitmapToCanvasX(Second.x); sy = MainImage->BitmapToCanvasY(Second.y); if (sx>MainImage->Width/2) sx = sx-5-size.cx; else sx = sx+5; if (ly>0) sy = sy-5-size.cy; else sy = sy+5; break; case OBLIQUE: Second = Point(X, Y); lx = Second.x-First.x; ly = Second.y-First.y; Len = sqrt(lx*lx+ly*ly); switch (MainImageForm->CurrentUnit) { case uInch: Len = Len/MainImageForm->CanvasInfor.DotsPerInch; break; case uCm: Len = 2.54*Len/MainImageForm->CanvasInfor.DotsPerInch; break; } MainImageForm->TempLabel->Caption = Format("%f", OPENARRAY(TVarRec, (Len))); size.cx = MainImageForm->TempLabel->Width; size.cy = MainImageForm->TempLabel->Height; sx = MainImage->BitmapToCanvasX(Second.x); sy = MainImage->BitmapToCanvasY(Second.y); if (ly>0) { sy = sy-5-size.cy; if (lx>0) sx = sx-5-size.cx; else sx = sx+5; } else { sy = sy+5; if (lx>0) sx = sx-5-size.cx; else sx = sx+5; } break; case ANGLEVIEW: case ANGLEROTATE: if (step > 1) { Third = Point(X, Y); lx = Third.x-Second.x; ly = Third.y-Second.y; double firstAngle = ArcTan2(First.y - Second.y, First.x - Second.x) * 180 / M_PI; double secondAngle = ArcTan2(Third.y - Second.y, Third.x - Second.x) * 180 / M_PI; // if (Shift.Contains(ssShift)) { diffAngle = firstAngle - secondAngle; if (diffAngle < 0) diffAngle += 360; // } else { //firstAngle > secondAngle ? firstAngle - secondAngle : secondAngle - firstAngle; // } MainImageForm->TempLabel->Caption = Format("%.2f", OPENARRAY(TVarRec, (diffAngle))) + Format(" (%.2f)", OPENARRAY(TVarRec, (360 - diffAngle))); size.cx = MainImageForm->TempLabel->Width; size.cy = MainImageForm->TempLabel->Height; sx = MainImage->BitmapToCanvasX(Third.x); sy = MainImage->BitmapToCanvasY(Third.y); if (ly>0) { sy = sy-5-size.cy; if (lx>0) sx = sx-5-size.cx; else sx = sx+5; } else { sy = sy+5; if (lx>0) sx = sx-5-size.cx; else sx = sx+5; } break; } } MainImageForm->TempLabel->Left = sx; MainImageForm->TempLabel->Top = sy; #if defined(TEXSTYLIST) MainImageForm->TempLabel->Update(); #endif if (Tapeline != ANGLEVIEW && Tapeline != ANGLEROTATE) { MainImageForm->DrawLineLocate(First, Second); } else { if (step == 1) { Second = Point(X, Y); MainImageForm->DrawLineLocate(First, Second); } else if (step == 2) { MainImageForm->DrawLineLocate(First, Second, 2); MainImageForm->DrawLineLocate(Second, Third, 2); } } IsDraw = true; } } return false; } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::iMainImageKeyDown(WORD Key, TShiftState Shift) { if (Key == 'Z') isZKeyDown = true; } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::iMainImageKeyUp(WORD Key, TShiftState Shift) { if (Key == 'Z') isZKeyDown = false; } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::UnitChange() { SetGrid(); } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::ReadyToOverlapChange(TUnionBitmap *Bitmap, RECT r, Byte c, bool IsRepeat, TUnionBitmap *Mask, bool flipX, bool flipY) { // 8.0 conversion RGBQUAD rgb[256]; //HDC dcDst = NULL; int w, h; MainImageForm->OverlapRect = r; OverlapRect = MainImageForm->OverlapRect; MainImageForm->preusecolor = c; preusecolor = MainImageForm->preusecolor; ExitOverlapChange(); if (MainImageForm->iMainImage->Reflection && MainImageForm->reflection){ RECT changeRange; MainImageForm->reflection->ChangeAvailableOriginalRange(r, changeRange); r.left = changeRange.left; r.top = changeRange.top; r.right = changeRange.right; r.bottom = changeRange.bottom; } w = r.right - r.left; h = r.bottom - r.top; //OverlapBitmap = new TTexpiaBitmap; if (MainImageForm->OverlapBitmap) delete MainImageForm->OverlapBitmap; MainImageForm->OverlapBitmap = new TUnionBitmap; OverlapBitmap = MainImageForm->OverlapBitmap; if (Bitmap->BitsPerPixel == 8) { Bitmap->GetColors(0, 256, rgb); OverlapBitmap->Create(w, h, 8, rgb); } else { OverlapBitmap->Create(w, h, 24); } if (IsRepeat) { if (Mask) { if (flipX){ MainImageForm->iMainImage->uBitmap->AutoRepeatStretchBltNormal( OverlapBitmap, 0, 0, w, h, r.left, r.top, w, h, SRCCOPY); Mask->AutoRepeatStretchBltXReverse(OverlapBitmap, 0, 0, w, h, r.left, r.top, w, h, SRCAND); Bitmap->AutoRepeatStretchBltXReverse(OverlapBitmap, 0, 0, w, h, r.left, r.top, w, h, SRCPAINT); } else if (flipY){ MainImageForm->iMainImage->uBitmap->AutoRepeatStretchBltNormal( OverlapBitmap, 0, 0, w, h, r.left, r.top, w, h, SRCCOPY); Mask->AutoRepeatStretchBltYReverse(OverlapBitmap, 0, 0, w, h, r.left, r.top, w, h, SRCAND); Bitmap->AutoRepeatStretchBltYReverse(OverlapBitmap, 0, 0, w, h, r.left, r.top, w, h, SRCPAINT); } else { //dcDst = OverlapBitmap->CreateDC(); //MainImageForm->iMainImage->uBitmap->UnionBitBlt(dcDst, 0, 0, w, h, r.left, r.top, SRCCOPY, false); // convert by celberus //Mask->UnionBitBlt(dcDst, 0, 0, w, h, r.left, r.top, SRCAND, false); // convert by celberus //Bitmap->UnionBitBlt(dcDst, 0, 0, w, h, r.left, r.top, SRCPAINT, false); // convert by celberus //OverlapBitmap->DeleteDC(dcDst); OverlapBitmap->CopyFromRect(MainImageForm->iMainImage->uBitmap, r.left, r.top, SRCCOPY); OverlapBitmap->CopyFromRect(Mask, r.left, r.top, SRCAND); OverlapBitmap->CopyFromRect(Bitmap, r.left, r.top, SRCPAINT); } } else { if (flipX) Bitmap->AutoRepeatStretchBltXReverse(OverlapBitmap, 0, 0, w, h, r.left, r.top, w, h, SRCCOPY); else if (flipY) Bitmap->AutoRepeatStretchBltYReverse(OverlapBitmap, 0, 0, w, h, r.left, r.top, w, h, SRCCOPY); else { //dcDst = OverlapBitmap->CreateDC(); //Bitmap->UnionBitBlt(dcDst, 0, 0, w, h, r.left, r.top, SRCCOPY, false); // convert by celberus //OverlapBitmap->DeleteDC(dcDst); OverlapBitmap->CopyFromRect(Bitmap, r.left, r.top, SRCCOPY); } } } else { if (Mask) { TUnionBitmap *tempBitmap = new TUnionBitmap; if (Bitmap->BitsPerPixel == 8) { Bitmap->GetColors(0, 256, rgb); tempBitmap->Create(w, h, 8, rgb); } else { tempBitmap->Create(w, h, 24); } if (flipX){ MainImageForm->iMainImage->uBitmap->AutoRepeatStretchBltNormal( OverlapBitmap, 0, 0, w, h, r.left, r.top, w, h, SRCCOPY); Mask->AutoRepeatStretchBltXReverse(OverlapBitmap, 0, 0, w, h, 0, 0, w, h, SRCAND); tempBitmap->Copy(0, 0, w, h, Mask, 0, 0, NOTSRCCOPY); tempBitmap->Copy(0, 0, w, h, Bitmap, 0, 0, SRCAND); tempBitmap->AutoRepeatStretchBltXReverse(OverlapBitmap, 0, 0, w, h, 0, 0, w, h, SRCPAINT); } else if (flipY){ MainImageForm->iMainImage->uBitmap->AutoRepeatStretchBltNormal( OverlapBitmap, 0, 0, w, h, r.left, r.top, w, h, SRCCOPY); Mask->AutoRepeatStretchBltYReverse(OverlapBitmap, 0, 0, w, h, 0, 0, w, h, SRCAND); tempBitmap->Copy(0, 0, w, h, Mask, 0, 0, NOTSRCCOPY); tempBitmap->Copy(0, 0, w, h, Bitmap, 0, 0, SRCAND); tempBitmap->AutoRepeatStretchBltYReverse(OverlapBitmap, 0, 0, w, h, 0, 0, w, h, SRCPAINT); } else { //dcDst = OverlapBitmap->CreateDC(); //¸¶Áö¸· ÆÄ¶ó¸ÞÅÍ: false, µû¶ó¼­ UnionBitmapÀÌ Src. //MainImageForm->iMainImage->uBitmap->UnionBitBlt(dcDst, 0, 0, w, h, r.left, r.top, SRCCOPY, false); //Mask->UnionBitBlt(dcDst, 0, 0, w, h, 0, 0, SRCAND, false); //tempBitmap->Copy(0, 0, w, h, Mask, 0, 0, NOTSRCCOPY); //tempBitmap->Copy(0, 0, w, h, Bitmap, 0, 0, SRCAND); //tempBitmap->UnionBitBlt(dcDst, 0, 0, w, h, 0, 0, SRCPAINT, false); //OverlapBitmap->DeleteDC(dcDst); OverlapBitmap->CopyFromRect(MainImageForm->iMainImage->uBitmap, r.left, r.top, SRCCOPY); OverlapBitmap->CopyFromRect(Mask, 0, 0, SRCAND); tempBitmap->Copy(0, 0, w, h, Mask, 0, 0, NOTSRCCOPY); tempBitmap->Copy(0, 0, w, h, Bitmap, 0, 0, SRCAND); OverlapBitmap->CopyFromRect(tempBitmap, 0, 0, SRCPAINT); } delete tempBitmap; } // ¹Ù²ï MoveCopy¿ë by celberus 2003-08-05 OverlapBitmap ÀÌ UnionÀ̸é MergeBitmapÀ» ¾²¸é µÇ´Âµ¥.. else { if (flipX) Bitmap->AutoRepeatStretchBltXReverse(OverlapBitmap, 0, 0, w, h, 0, 0, w, h, SRCCOPY); else if (flipY) Bitmap->AutoRepeatStretchBltYReverse(OverlapBitmap, 0, 0, w, h, 0, 0, w, h, SRCCOPY); else { //dcDst = OverlapBitmap->CreateDC(); //Bitmap->UnionBitBlt(dcDst, 0, 0, w, h, 0, 0, SRCCOPY, false); // convert by celberus //OverlapBitmap->DeleteDC(dcDst); OverlapBitmap->CopyFromRect(Bitmap, 0, 0, SRCCOPY); } } } #if defined(TEXSTYLIST) if (MainImageForm->iMainImage->IsBackGround() == 1) { //OverlapBack = new TTexpiaBitmap; if (MainImageForm->OverlapBack) delete MainImageForm->OverlapBack; MainImageForm->OverlapBack = new TUnionBitmap; OverlapBack = MainImageForm->OverlapBack; if (Bitmap->BitsPerPixel == 8) { OverlapBack->Create(w, h, 8, rgb); } else { OverlapBack->Create(w, h, 24); } if (flipX){ MainImageForm->iMainImage->BackGround->AutoRepeatStretchBltXReverse( OverlapBack, 0, 0, w, h, r.left, r.top, w, h, SRCCOPY); } else if (flipY) { MainImageForm->iMainImage->BackGround->AutoRepeatStretchBltYReverse( OverlapBack, 0, 0, w, h, r.left, r.top, w, h, SRCCOPY); } else { //dcDst = OverlapBack->CreateDC(); //MainImageForm->iMainImage->BackGround->UnionBitBlt(dcDst, 0, 0, w, h, r.left, r.top, SRCCOPY, false); // convert by celberus //OverlapBack->DeleteDC(dcDst); OverlapBack->CopyFromRect(MainImageForm->iMainImage->BackGround, r.left, r.top, SRCCOPY); } } #endif } //---------------------------------------------------------------------------- void __fastcall TFullViewForm::ExitOverlapChange() { //doDestroy(OverlapBack) //doDestroy(OverlapBitmap) if (MainImageForm) { doDestroy(MainImageForm->OverlapBitmap) doDestroy(MainImageForm->OverlapBack) } if (FullViewForm) { FullViewForm->OverlapBitmap = NULL; FullViewForm->OverlapBack = NULL; } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::eOverlapChange(TObject *Sender) { TNumEdit *s; s = (TNumEdit *)Sender; if (0 > s->IntValue) { s->Value = 0; } if (100 < s->IntValue) { s->Value = 100; } tbOverlap->Position = s->IntValue; FOverlapDensity = (tbOverlap->Position / 100.0) * 63.0; #if defined(TEXSTYLIST) MainImageForm->OverlapChange(); #endif MainImageForm->iMainImageChange(); } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::sbGridMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { String screencam, cam, camdir; TRegistry *Registry; SHELLEXECUTEINFO screeninfo; if (Button == mbRight && Shift.Contains(ssShift)) { Registry = new TRegistry; if (!Registry) return; Registry->RootKey = HKEY_LOCAL_MACHINE; Registry->OpenKey(RegFilename + "\\Directory",TRUE); // yw screencam = Registry->ReadString("screencam"); delete Registry; memset(&screeninfo,0,sizeof(screeninfo)); screeninfo.cbSize = sizeof(screeninfo); screeninfo.lpVerb = L"open"; screeninfo.lpDirectory = screencam.c_str(); screeninfo.lpFile = L"scplayer.exe"; cam = screencam + "\\TexStylist\\view1.scm"; camdir = "\"" + cam + "\""; screeninfo.lpParameters = camdir.c_str(); screeninfo.fMask = SEE_MASK_NOCLOSEPROCESS; screeninfo.nShow = SW_SHOWDEFAULT; if(!ShellExecuteEx(&screeninfo)) { ShowMessage("can't play screencam movie."); return; } } } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::GetZoomRatio(TPItemImage *mi, int &zi, int &zo) { // convert by celberus int width = mi->uBitmap->Width, height = mi->uBitmap->Height; int r; bool bR = false; if (mi) { r = 1; if (Panel->Width-8Height-8Width-8>=width/r && Panel->Height-8>=height/r) { break; } r++; } bR = false; } else { while (true) { if (Panel->Width-8Height-8sbSnapGrid->Down){ double gridsize_x; double gridsize_y; switch (Grid.Unit) { case uInch: gridsize_x = Grid.X*MainImageForm->CanvasInfor.DotsPerInch; gridsize_y = Grid.Y*MainImageForm->CanvasInfor.DotsPerInch; break; case uCm: // Cm°°Àº °æ¿ì¿¡´Â /2.54·Î ÀÎÇÑ ¿ÀÂ÷°¡ ¹ß»ýÇÑ´Ù. °¨¾ÈÇϱæ~ gridsize_x = (float)Grid.X*MainImageForm->CanvasInfor.DotsPerInch/2.54; gridsize_y = (float)Grid.Y*MainImageForm->CanvasInfor.DotsPerInch/2.54; break; default: gridsize_x = Grid.X; gridsize_y = Grid.Y; break; } int interval = Snap_Interval; /* if(gridsize_x >= 5 && gridsize_y >= 5){ if(X%gridsize_x < interval) snapped_X = X/gridsize_x*gridsize_x; else if(X%gridsize_x > gridsize_x-interval) snapped_X = X/gridsize_x*gridsize_x+gridsize_x; if(Y%gridsize_y < interval) snapped_Y = Y/gridsize_y*gridsize_y; else if(Y%gridsize_y > gridsize_y-interval) snapped_Y = Y/gridsize_y*gridsize_y+gridsize_y; } */ if(gridsize_x >= 5 && gridsize_y >= 5){ if(X-((int)(X/gridsize_x)*gridsize_x) < interval) snapped_X = (int)(X/gridsize_x)*gridsize_x; else if(X-((int)(X/gridsize_x)*gridsize_x) > gridsize_x-interval) snapped_X = (int)(X/gridsize_x)*gridsize_x+gridsize_x; if(Y-((int)(Y/gridsize_y)*gridsize_y) < interval) snapped_Y = (int)(Y/gridsize_y)*gridsize_y; else if(Y-((int)(Y/gridsize_y)*gridsize_y) > gridsize_y-interval) snapped_Y = (int)(Y/gridsize_y)*gridsize_y+gridsize_y; } } POINT temp_p; temp_p.x = snapped_X; temp_p.y = snapped_Y; return temp_p; } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::itemOBLIQUEClick(TObject *Sender) { if (MainImageForm) MainImageForm->iMainImageChange(); ExitLocate(); rzmenuBtnRuler->Down = true; TMenuItem *item = (TMenuItem*)Sender; // PopupMenu Áß ¾î¶² ÀÚ°¡ ¼±ÅõǾú´ÂÁö ±â·ÏÇϱâ À§ÇØ - by monkman (2010.08.27) RulerPopupMenu->Tag = item->Tag; switch(RulerPopupMenu->Tag) { case 0: Tapeline = OBLIQUE; break; case 1: Tapeline = HORIZONTAL; break; case 2: Tapeline = VERTICAL; break; case 3: Tapeline = OFF; item = itemROffImg; rzmenuBtnRuler->Down = false; break; } ChangePenMenuIcon(rzmenuBtnRuler->Tag, item); } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::itemANGLEVIEWClick(TObject *Sender) { MainImageForm->iMainImageChange(); ExitLocate(); rzmenuBtnAngle->Down = true; TMenuItem *item = (TMenuItem*)Sender; // PopupMenu Áß ¾î¶² °¢µµ°¡ ¼±ÅõǾú´ÂÁö ±â·ÏÇϱâ À§ÇØ - by monkman (2010.08.27) AnglePopupMenu->Tag = item->Tag; switch(AnglePopupMenu->Tag) { case 0: Tapeline = ANGLEVIEW; break; case 1: Tapeline = ANGLEROTATE; break; case 2: Tapeline = OFF; item = itemAOffImg; rzmenuBtnAngle->Down = false; break; } ChangePenMenuIcon(rzmenuBtnAngle->Tag, item); } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::rzmenuBtnAngleClick(TObject *Sender) { MainImageForm->iMainImageChange(); ExitLocate(); Tapeline = ANGLEVIEW; // Ŭ¸¯ÇßÀ» °æ¿ì ¸¶Áö¸· ¼±ÅÃÇß´ø °¢µµ°¡ ¼±Åõǵµ·Ï ÇÑ´Ù // °°Àº À̺¥Æ®°¡ Áߺ¹ È£ÃâµÉ ¼öµµ ÀÖ´Ù - by monkman (2010.08.27) if (AnglePopupMenu->Tag == itemANGLEVIEW->Tag) itemANGLEVIEWClick(itemANGLEVIEW); else if (AnglePopupMenu->Tag == itemANGLEROTATE->Tag) itemANGLEVIEWClick(itemANGLEROTATE); else if (AnglePopupMenu->Tag == itemAOff->Tag) itemANGLEVIEWClick(itemAOff); } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::rzmenuBtnAngleMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { rzmenuBtnRuler->Down = false; Tapeline = OFF; //rzmenuBtnOverlap->Down = false; } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::rzmenuBtnRulerClick(TObject *Sender) { MainImageForm->iMainImageChange(); ExitLocate(); Tapeline = OBLIQUE; // Ŭ¸¯ÇßÀ» °æ¿ì ¸¶Áö¸· ¼±ÅÃÇß´ø ÀÚ°¡ ¼±Åõǵµ·Ï ÇÑ´Ù // °°Àº À̺¥Æ®°¡ Áߺ¹ È£ÃâµÉ ¼öµµ ÀÖ´Ù - by monkman (2010.08.27) if (RulerPopupMenu->Tag == itemOBLIQUE->Tag) itemOBLIQUEClick(itemOBLIQUE); else if (RulerPopupMenu->Tag == itemHORIZONTAL->Tag) itemOBLIQUEClick(itemHORIZONTAL); else if (RulerPopupMenu->Tag == itemVERTICAL->Tag) itemOBLIQUEClick(itemVERTICAL); else if (RulerPopupMenu->Tag == itemROff->Tag) itemOBLIQUEClick(itemROff); } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::rzmenuBtnRulerMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { rzmenuBtnAngle->Down = false; Tapeline = OFF; //rzmenuBtnOverlap->Down = false; } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::TrackBarChange(TObject *Sender) { String sbZoom; switch (TrackBar->Position) { case 0: MainImageForm->ZoomChange(1, 16); sbZoom = "1/16"; Snap_Interval = 100; //ÀåÁø¸¸ : Snap µÇ´Â ÀÎÅ͹ú Á¶Àý break; case 1: MainImageForm->ZoomChange(1, 12); sbZoom = "1/12"; Snap_Interval = 70; break; case 2: MainImageForm->ZoomChange(1, 8); sbZoom = "1/8"; Snap_Interval = 50; break; case 3: MainImageForm->ZoomChange(1, 6); sbZoom = "1/6"; Snap_Interval = 40; break; case 4: MainImageForm->ZoomChange(1, 4); sbZoom = "1/4"; Snap_Interval = 25; break; case 5: MainImageForm->ZoomChange(1, 3); sbZoom = "1/3"; Snap_Interval = 18; break; case 6: MainImageForm->ZoomChange(1, 2); sbZoom = "1/2"; Snap_Interval = 15; break; case 7: MainImageForm->ZoomChange(2, 3); sbZoom = "2/3"; Snap_Interval = 10; break; case 8: MainImageForm->ZoomChange(1, 1); sbZoom = "1"; Snap_Interval = 10; break; case 9: MainImageForm->ZoomChange(3, 2); sbZoom = "3/2"; Snap_Interval = 9; break; case 10: MainImageForm->ZoomChange(2, 1); sbZoom = "2"; Snap_Interval = 7; break; case 11: MainImageForm->ZoomChange(3, 1); sbZoom = "3"; Snap_Interval = 6; break; case 12: MainImageForm->ZoomChange(4, 1); sbZoom = "4"; Snap_Interval = 5; break; case 13: MainImageForm->ZoomChange(6, 1); sbZoom = "6"; Snap_Interval = 4; break; case 14: MainImageForm->ZoomChange(8, 1); sbZoom = "8"; Snap_Interval = 4; break; case 15: MainImageForm->ZoomChange(12, 1); sbZoom = "12"; Snap_Interval = 3; break; case 16: MainImageForm->ZoomChange(16, 1); sbZoom = "16"; Snap_Interval = 2; break; } TrackBar->Hint = sbZoom; LabelZoom->Caption = IDS_COMMON_ZOOM + L" : " + sbZoom; MainImageForm->SetCaretPositionForTextBox(); // For TextBox by maxleo21c (04.10.30) } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::sbSOffClick(TObject *Sender) { MainImageForm->iMainImageChange(); ExitLocate(); TSpeedButton *spdBtn = (TSpeedButton*)Sender; tbOverlap->Visible = false; eOverlap->Visible = false; tbOverlap->Enabled = false; eOverlap->Enabled = false; switch(spdBtn->Tag) { case 11: //ÀϹÝÇü Super = sNormal; break; case 12: //¸Á»çÇü Super = sGauze; break; case 13: //È¥ÇÕÇü Super = sOverlap; tbOverlap->Visible = true; eOverlap->Visible = true; tbOverlap->Enabled = true; eOverlap->Enabled = true; break; case 10: //ÇØÁ¦ Super = sOff; break; } ExitOverlapChange(); if (FOnSuperChange) FOnSuperChange(Sender); } //--------------------------------------------------------------------------- void __fastcall TFullViewForm::ChangePenMenuIcon(int tag, TMenuItem *menuItem) { TRzMenuToolbarButton *tbBtn; if (tag == 1) tbBtn = rzmenuBtnRuler; else if (tag == 2) tbBtn = rzmenuBtnAngle; else return; tbBtn->NumGlyphs = 1; tbBtn->Glyph->Assign(menuItem->Bitmap); } //---------------------------------------------------------------------------