//--------------------------------------------------------------------------- #include #pragma hdrstop #include "Reflection_F.h" #include "MainImage.h" #include "Window.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "RzButton" #pragma link "RzPanel" #pragma link "RzRadChk" #pragma resource "*.dfm" //--------------------------------------------------------------------------- #define IDS_DRAWREFLECTION StringTable[0] #define IDS_GETIMAGE StringTable[1] //--------------------------------------------------------------------------- TReflectionForm *ReflectionForm; //--------------------------------------------------------------------------- __fastcall TReflectionForm::TReflectionForm(TComponent* Owner) : TForm(Owner) { hWnd = ((TWinControl *)Owner)->Handle; StringTable.Create(DirectoryItem, Language, "Reflection"); rzrbMode->Caption = IDS_DRAWREFLECTION; rzrbGetImage->Caption = IDS_GETIMAGE; rzRun->Caption = IDS_COMMON_RUN; rzCancel->Caption = IDS_COMMON_BUTTONCANCEL; rzApply->Caption = IDS_COMMON_APPLY; ModeImageL->Hint = IDS_COMMON_LEFT; GetImageL->Hint = IDS_COMMON_LEFT; ModeImageR->Hint = IDS_COMMON_RIGHT; GetImageR->Hint = IDS_COMMON_RIGHT; ModeImageT->Hint = IDS_COMMON_UP; GetImageT->Hint = IDS_COMMON_UP; ModeImageB->Hint = IDS_COMMON_DOWN; GetImageB->Hint = IDS_COMMON_DOWN; } //--------------------------------------------------------------------------- void __fastcall TReflectionForm::InitForm() { if (MainImageForm->reflection){ rzRun->Enabled = false; rzgbMode->Enabled = false; gbModeEnabled(false); rzgbGetImage->Enabled = false; gbGetImageEnabled(false); rzrbMode->Enabled = false; rzrbGetImage->Enabled = false; } else { rzRun->Enabled = true; } Merge = false; } //--------------------------------------------------------------------------- void __fastcall TReflectionForm::rzRunClick(TObject *Sender) { TypeDirection direction; bool getHalf = false; TLRB getImageDirection; TLRB useDirection; if (rzrbMode->Checked){ getHalf = false; if (rzrbVerL->Checked){ direction = D_LR; useDirection = D_LEFT; } else if (rzrbVerR->Checked){ direction = D_LR; useDirection = D_RIGHT; } else if (rzrbHorT->Checked){ direction = D_TB; useDirection = D_TOP; } else if (rzrbHorB->Checked){ direction = D_TB; useDirection = D_BOTTOM; } } else if (rzrbGetImage->Checked){ getHalf = true; if (rzrbGetVL->Checked){ direction = D_LR; useDirection = D_LEFT; getImageDirection = D_LEFT; } else if (rzrbGetVR->Checked){ direction = D_LR; useDirection = D_RIGHT; getImageDirection = D_RIGHT; } else if (rzrbGetHT->Checked){ direction = D_TB; useDirection = D_TOP; getImageDirection = D_TOP; } else if (rzrbGetHB->Checked){ direction = D_TB; useDirection = D_BOTTOM; getImageDirection = D_BOTTOM; } } RECT rtRange; if (MainImageForm->WorkArea && MainImageForm->WorkArea->Mask && MainImageForm->WorkArea->Range.right > 0 && MainImageForm->WorkArea->Range.bottom > 0) { rtRange.left = MainImageForm->WorkArea->Range.left; rtRange.top = MainImageForm->WorkArea->Range.top; rtRange.right = MainImageForm->WorkArea->Range.right; rtRange.bottom = MainImageForm->WorkArea->Range.bottom; } else { rtRange.left = 0; rtRange.top = 0; rtRange.right = MainImageForm->iMainImage->uBitmap->Width; rtRange.bottom = MainImageForm->iMainImage->uBitmap->Height; } // verticalÀε¥ width°¡ canvaswidthÀÇ ¹Ýº¸´Ù Å©¸é // horizontalÀε¥ height°¡ canvasheightÀÇ ¹Ýº¸´Ù Å©¸é // ¹ÝÂʰ¡Á®¿À±â »ç¿ë¾ÈµÊ getHalf = false if (direction == D_LR){ if (rtRange.right - rtRange.left > MainImageForm->iMainImage->uBitmap->Width/2) getHalf = false; } else if (direction == D_TB){ if (rtRange.bottom - rtRange.top > MainImageForm->iMainImage->uBitmap->Height/2) getHalf = false; } /////////////// //MainImageForm->UndoSave(UK_PATTERN, Rect(0, 0, 0, 0)); MainImageForm->CreateReflection(rtRange, direction, getHalf, getImageDirection, useDirection); MainImageForm->iMainImage->PositionY = 0; MainImageForm->iMainImage->PositionX = 0; MainImageForm->iMainImage->Repaint(); Close(); } //--------------------------------------------------------------------------- void __fastcall TReflectionForm::rzApplyClick(TObject *Sender) { if (MainImageForm->reflection){ int posX = MainImageForm->reflection->backupPositionX; int posY = MainImageForm->reflection->backupPositionY; MainImageForm->ApplyReflection(); MainImageForm->DeleteReflection(); MainImageForm->WorkArea->SetRectangle(MainImageForm->ReflectionBackupRect); MainImageForm->WorkAreaChange(); MainImageForm->iMainImage->PositionX = posX; MainImageForm->iMainImage->PositionY = posY; } PostMessage(hWnd, TPM_EXITFUNCTION, 0, 0); } //--------------------------------------------------------------------------- void __fastcall TReflectionForm::ReflectionModeClick(TObject *Sender) { //SetEnabled(); } //--------------------------------------------------------------------------- void __fastcall TReflectionForm::gbModeEnabled(bool value) { ModeImageL->Visible = value; ModeImageR->Visible = value; ModeImageT->Visible = value; ModeImageB->Visible = value; ModeImageLD->Visible = !value; ModeImageRD->Visible = !value; ModeImageTD->Visible = !value; ModeImageBD->Visible = !value; } //--------------------------------------------------------------------------- void __fastcall TReflectionForm::gbGetImageEnabled(bool value) { GetImageL->Visible = value; GetImageR->Visible = value; GetImageT->Visible = value; GetImageB->Visible = value; GetImageLD->Visible = !value; GetImageRD->Visible = !value; GetImageTD->Visible = !value; GetImageBD->Visible = !value; } //--------------------------------------------------------------------------- void __fastcall TReflectionForm::ModeClick(TObject *Sender) { if (rzrbMode->Checked){ rzgbMode->Enabled = true; gbModeEnabled(true); rzgbGetImage->Enabled = false; gbGetImageEnabled(false); } else if (rzrbGetImage->Checked){ rzgbMode->Enabled = false; gbModeEnabled(false); rzgbGetImage->Enabled = true; gbGetImageEnabled(true); } } //--------------------------------------------------------------------------- void __fastcall TReflectionForm::rzCancelClick(TObject *Sender) { if (MainImageForm->reflection){ int posX = MainImageForm->reflection->backupPositionX; int posY = MainImageForm->reflection->backupPositionY; MainImageForm->CancelReflection(); MainImageForm->DeleteReflection(); MainImageForm->WorkArea->SetRectangle(MainImageForm->ReflectionBackupRect); MainImageForm->WorkAreaChange(); MainImageForm->iMainImage->PositionX = posX; MainImageForm->iMainImage->PositionY = posY; } PostMessage(hWnd, TPM_EXITFUNCTION, 0, 0); } //--------------------------------------------------------------------------- void __fastcall TReflectionForm::FormClose(TObject *Sender, TCloseAction &Action) { BEGIN_LOG(""); PostMessage(hWnd, TPM_EXITFUNCTION, 0, 0); END_LOG; } //---------------------------------------------------------------------------