//--------------------------------------------------------------------------- #include #pragma hdrstop #include "NewGrouping_Viewer.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "TPImage" #pragma link "TPLayerImage" #pragma resource "*.dfm" TNewGroupingViewForm *NewGroupingViewForm; //--------------------------------------------------------------------------- __fastcall TNewGroupingViewForm::TNewGroupingViewForm(TComponent* Owner) : TForm(Owner) { currentBitmap = NULL; originBitmap = NULL; } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::FormCreate(TObject *Sender) { // } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::FormClose(TObject *Sender, TCloseAction &Action) { // } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::FormCloseQuery(TObject *Sender, bool &CanClose) { // } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::FormDestroy(TObject *Sender) { // } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::FormResize(TObject *Sender) { stImage->Top = 8; stImage->Left = 10; currShape->Top = stImage->Top + stImage->Height + 5; currShape->Left = stImage->Left; currShape->Height = ClientHeight - (currShape->Top + currHScrollBar->Height + 8); currShape->Width = (ClientWidth - currVScrollBar->Width - originVScrollBar->Width - 30)/2; currLayerImage->Top = currShape->Top + 1; currLayerImage->Left = currShape->Left + 1; currLayerImage->Height = currShape->Height - 2; currLayerImage->Width = currShape->Width - 2; currVScrollBar->Top = currShape->Top; currVScrollBar->Left = currShape->Left + currShape->Width + 1; currVScrollBar->Height = currShape->Height; currHScrollBar->Top = currShape->Top + currShape->Height + 1; currHScrollBar->Left = currShape->Left; currHScrollBar->Width = currShape->Width; stOriginal->Top = stImage->Top; stOriginal->Left = currShape->Left + currShape->Width + currVScrollBar->Width + 10; originShape->Top = currShape->Top; originShape->Left = stOriginal->Left; originShape->Height = currShape->Height; originShape->Width = currShape->Width; originLayerImage->Top = originShape->Top + 1; originLayerImage->Left = originShape->Left + 1; originLayerImage->Height = originShape->Height - 2; originLayerImage->Width = originShape->Width - 2; originVScrollBar->Top = originShape->Top; originVScrollBar->Left = originShape->Left + originShape->Width + 1; originVScrollBar->Height = originShape->Height; originHScrollBar->Top = originShape->Top + originShape->Height + 1; originHScrollBar->Left = originShape->Left; originHScrollBar->Width = originShape->Width; } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::InitForm(TUnionBitmap *previewBitmap) { currentBitmap = new TUnionBitmap; originBitmap = new TUnionBitmap; currentBitmap = currLayerImage->uBitmap; originBitmap = originLayerImage->uBitmap; currentBitmap->Create(previewBitmap->Width, previewBitmap->Height, 24); originBitmap->Create(previewBitmap->Width, previewBitmap->Height, 24); } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::ExitForm() { delete currentBitmap; delete originBitmap; currentBitmap = NULL; originBitmap = NULL; } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::ViewForm(TUnionBitmap *previewBitmap, TUnionBitmap *originalBitmap) { currentBitmap->Copy(previewBitmap, SRCCOPY); originBitmap->Copy(originalBitmap, SRCCOPY); Visible= true; } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::ViewFormKeyDown(int Key) { if((Key == 65) || (Key == 97)) //'a' or 'A' { int Ratio = 0; Key = 0; switch (currLayerImage->ZoomIn) { //ÇöÀçÀÇ È®´ë, Ãà¼ÒµÈ ºñÀ²Àº ¾Ë¾Æ³»¾î case 1: switch (currLayerImage->ZoomOut) { // ºñÀ²¿¡ µû¶ó ratio¶ó´Â º¯¼ö¿¡ Àû´çÇÑ °ªÀ» case 1: Ratio = 302; break; // ÀԷ½Ã۰í, ±×°ÍÀº parameter·Î ÇÏ´Â ÇÔ¼ö(RatioZoom) case 2: Ratio = 203; break; // ¸¦ È£ÃâÇÑ´Ù. case 3: Ratio = 102; break; case 4: Ratio = 103; break; // ¼öÁ¤ By GreenFish (Áܴܰè È®Àå) case 6: Ratio = 104; break; case 8: Ratio = 106; break; case 12: Ratio = 108; break; case 16: Ratio = 112; break; } break; case 2: switch (currLayerImage->ZoomOut) { case 1: Ratio = 301; break; case 3: Ratio = 101; break; } break; case 3: switch (currLayerImage->ZoomOut) { case 1: Ratio = 401; break; case 2: Ratio = 201; break; } break; case 4: Ratio = 601; break; case 6: Ratio = 801; break; case 8: Ratio = 1201; break; case 12: Ratio = 1601; break; default: return; } RatioZoom(Ratio); } else if((Key == 83) || (Key == 115)){ // 's' or 'S' int Ratio = 0; Key = 0; switch (currLayerImage->ZoomIn) { case 1: switch (currLayerImage->ZoomOut) { case 1: Ratio = 203 ; break; case 2: Ratio = 103; break; case 3: Ratio = 104; break; case 4: Ratio = 106; break; case 6: Ratio = 108; break; case 8: Ratio = 112; break; case 12: Ratio = 116; break; default: return; } break; case 2: switch (currLayerImage->ZoomOut) { case 1: Ratio = 302; break; case 3: Ratio = 102; break; } break; case 3: switch (currLayerImage->ZoomOut) { case 1: Ratio = 201; break; case 2: Ratio = 101; break; } break; case 4: Ratio = 301; break; case 6: Ratio = 401; break; case 8: Ratio = 601; break; case 12 : Ratio = 801; break; case 16 : Ratio = 1201; break; default: return; } RatioZoom(Ratio); } } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::ViewFormMouseWheel(TShiftState Shift, int WheelDelta) { currLayerImage->SetPosition(currLayerImage->PositionX, currLayerImage->PositionY-WheelDelta); originLayerImage->SetPosition(originLayerImage->PositionX, originLayerImage->PositionY-WheelDelta); } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::RatioZoom(int r) //by qe and GreenFish { int a, b; a = r / 100; b = r % 100; GetCursorPos(&ptScreen); //¸¶¿ì½º Ä¿¼­ÀÇ À§Ä¡¸¦ ÀԷ¹޴´Ù. ZoomChange(a, b, &ptScreen); } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::ZoomChange(int zi, int zo, POINT *ptScreen) { POINT ptClient; if (zi!=currLayerImage->ZoomIn || zo!=currLayerImage->ZoomOut) { currLayerImage->isZoomChanged = true; originLayerImage->isZoomChanged = true; if (ptScreen) { ptClient = currLayerImage->ScreenToClient(*ptScreen); currLayerImage->SetZoom(zi, zo, &ptClient); originLayerImage->SetZoom(zi, zo, &ptClient); } else { currLayerImage->SetZoom(zi, zo); originLayerImage->SetZoom(zi, zo); } } updateImage(); } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::currLayerImagePositionChange( TObject *Sender) { currHScrollBar->Position = currLayerImage->PositionX; currVScrollBar->Position = currLayerImage->PositionY; } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::originLayerImagePositionChange( TObject *Sender) { originHScrollBar->Position = originLayerImage->PositionX; originVScrollBar->Position = originLayerImage->PositionY; } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::currVScrollBarScroll(TObject *Sender, TScrollCode ScrollCode, int &ScrollPos) { currLayerImage->PositionY = currVScrollBar->Position; originLayerImage->PositionY = currVScrollBar->Position; } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::currHScrollBarScroll(TObject *Sender, TScrollCode ScrollCode, int &ScrollPos) { currLayerImage->PositionX = currHScrollBar->Position; originLayerImage->PositionX = currHScrollBar->Position; } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::updateImage() { TPoint Size; Size.x = currShape->Width*currLayerImage->ZoomOut/currLayerImage->ZoomIn; Size.y = currShape->Height*currLayerImage->ZoomOut/currLayerImage->ZoomIn; if (currLayerImage->uBitmap->WidthMax=0; originHScrollBar->Max=0;} else { currHScrollBar->Max = currLayerImage->uBitmap->Width-Size.x; originHScrollBar->Max = originLayerImage->uBitmap->Width-Size.x; } currHScrollBar->SmallChange = currHScrollBar->Max/10; currHScrollBar->LargeChange = currHScrollBar->Max/5; originHScrollBar->SmallChange = originHScrollBar->Max/10; originHScrollBar->LargeChange = originHScrollBar->Max/5; if (currLayerImage->uBitmap->HeightMax=0; originVScrollBar->Max=0;} else { currVScrollBar->Max = currLayerImage->uBitmap->Height-Size.y; originVScrollBar->Max = originLayerImage->uBitmap->Height-Size.y; } currVScrollBar->SmallChange = currVScrollBar->Max/10; // SmallChange´Â Àüü »çÀÌÁîÀÇ 1/10 currVScrollBar->LargeChange = currVScrollBar->Max/5; // LargeChange´Â Àüü »çÀÌÁîÀÇ 1/5 originVScrollBar->SmallChange = originVScrollBar->Max/10; // SmallChange´Â Àüü »çÀÌÁîÀÇ 1/10 originVScrollBar->LargeChange = originVScrollBar->Max/5; // LargeChange´Â Àüü »çÀÌÁîÀÇ 1/5 } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::originHScrollBarScroll( TObject *Sender, TScrollCode ScrollCode, int &ScrollPos) { currLayerImage->PositionX = originHScrollBar->Position; originLayerImage->PositionX = originHScrollBar->Position; } //--------------------------------------------------------------------------- void __fastcall TNewGroupingViewForm::originVScrollBarScroll( TObject *Sender, TScrollCode ScrollCode, int &ScrollPos) { currLayerImage->PositionY = originVScrollBar->Position; originLayerImage->PositionY = originVScrollBar->Position; } //---------------------------------------------------------------------------