//--------------------------------------------------------------------- #include #pragma hdrstop #include "ResizeCanvas.h" //--------------------------------------------------------------------- #pragma resource "*.dfm" //--------------------------------------------------------------------- #define IDS_CURRENTSIZE StringTable[0] #define IDS_RESOLUTION StringTable[1] #define IDS_NEWSIZE StringTable[2] #define IDS_OK StringTable[3] #define IDS_CANCEL StringTable[4] #define IDS_UNIT StringTable[5] #define IDS_CM StringTable[6] #define IDS_INCH StringTable[7] #define IDS_DOT StringTable[8] #define IDS_DOTSINCH StringTable[9] #define IDS_RESIZECANVAS StringTable[10] #define IDS_PROPORTIONS StringTable[11] //--------------------------------------------------------------------- TResizeCanvasForm *ResizeCanvasForm; //--------------------------------------------------------------------- __fastcall TResizeCanvasForm::TResizeCanvasForm(TComponent* AOwner) : TForm(AOwner) { //================================================================= StringTable.Create(DirectoryCommon, Language, "ResizeCanvas"); SetSmallFont(Font); Caption = IDS_RESIZECANVAS; GroupBox1->Caption = IDS_CURRENTSIZE; gbNewSize->Caption = IDS_NEWSIZE; lbCSWidth->Caption = IDS_COMMON_WIDTH; lbCSHeight->Caption = IDS_COMMON_HEIGHT; lbCSResolution->Caption = IDS_RESOLUTION; Label1->Caption = IDS_COMMON_WIDTH; Label2->Caption = IDS_COMMON_HEIGHT; Label3->Caption = IDS_RESOLUTION; lbNSWidthUnit->Caption = IDS_CM; lbNSHeightUnit->Caption = IDS_CM; lbNSResolutionUnit->Caption = IDS_DOTSINCH; OKBtn->Caption = IDS_OK; CancelBtn->Caption = IDS_CANCEL; rgUnit->Caption = IDS_UNIT; rgUnit->Items->Strings[0] = IDS_CM; rgUnit->Items->Strings[1] = IDS_INCH; rgUnit->Items->Strings[2] = IDS_DOT; proportion->Caption = IDS_PROPORTIONS; //================================================================= ChangeSW = false; } //--------------------------------------------------------------------- void __fastcall TResizeCanvasForm::FormActivate(TObject *Sender) { NewSize.cx = CanvasInfor.Width; NewSize.cy = CanvasInfor.Height; CP.cx = CanvasInfor.Width; CP.cy = CanvasInfor.Height; NewDPI = CanvasInfor.DotsPerInch; FUnit = uCm; View(); } //--------------------------------------------------------------------------- void __fastcall TResizeCanvasForm::edNSClick(TObject *Sender) { TEdit *ed = (TEdit *)Sender; ed->SetFocus(); } //--------------------------------------------------------------------------- void __fastcall TResizeCanvasForm::edNSDblClick(TObject *Sender) { TEdit *ed = (TEdit *)Sender; ed->SetFocus(); ed->SelectAll(); } //--------------------------------------------------------------------------- void __fastcall TResizeCanvasForm::edNSWidthChange(TObject *Sender) { if (edNSWidth->Text.Length() > 0) { if(proportion->Checked && ChangeSW){ ChangeSW = false; edNSHeight->Text = Format("%f", OPENARRAY(TVarRec, ((double)(CP.cy * StrToFloat(edNSWidth->Text))/CP.cx))); } switch (FUnit) { case uCm: NewSize.cx = StrToFloat(edNSWidth->Text)*NewDPI/2.54+0.5; break; case uInch: NewSize.cx = StrToFloat(edNSWidth->Text)*NewDPI+0.5; break; default: NewSize.cx = StrToInt(edNSWidth->Text); break; } } } //--------------------------------------------------------------------------- void __fastcall TResizeCanvasForm::edNSHeightChange(TObject *Sender) { if (edNSHeight->Text.Length() > 0) { if(proportion->Checked && ChangeSW){ ChangeSW = false; edNSWidth->Text = Format("%f", OPENARRAY(TVarRec, ((double)(CP.cx * StrToFloat(edNSHeight->Text))/CP.cy))); } switch (FUnit) { case uCm: NewSize.cy = StrToFloat(edNSHeight->Text)*NewDPI/2.54+0.5; break; case uInch: NewSize.cy = StrToFloat(edNSHeight->Text)*NewDPI+0.5; break; default: NewSize.cy = StrToInt(edNSHeight->Text); break; } } } //--------------------------------------------------------------------------- void __fastcall TResizeCanvasForm::edNSResolutionExit(TObject *Sender) { Word DPI; DPI = StrToInt(edNSResolution->Text); NewSize.cx = DPI*NewSize.cx/NewDPI+0.5; NewSize.cy = DPI*NewSize.cy/NewDPI+0.5; NewDPI = DPI; } //--------------------------------------------------------------------------- void __fastcall TResizeCanvasForm::rgUnitClick(TObject *Sender) { switch (rgUnit->ItemIndex) { case 0: FUnit = uCm; lbNSWidthUnit->Caption = "Cm"; lbNSHeightUnit->Caption = "Cm"; break; case 1: FUnit = uInch; lbNSWidthUnit->Caption = "Inch"; lbNSHeightUnit->Caption = "Inch"; break; case 2: FUnit = uDot; lbNSWidthUnit->Caption = "Dots"; lbNSHeightUnit->Caption = "Dots"; break; } View(); } //--------------------------------------------------------------------------- void __fastcall TResizeCanvasForm::View() { switch (FUnit) { case uCm: lbCSWidth->Caption = AnsiString(IDS_COMMON_WIDTH) + Format(" : %f", OPENARRAY(TVarRec, (2.54*CanvasInfor.Width/CanvasInfor.DotsPerInch))); lbCSHeight->Caption = AnsiString(IDS_COMMON_HEIGHT) + Format(" : %f", OPENARRAY(TVarRec, (2.54*CanvasInfor.Height/CanvasInfor.DotsPerInch))); edNSWidth->Text = Format("%f", OPENARRAY(TVarRec, (2.54*NewSize.cx/NewDPI))); edNSHeight->Text = Format("%f", OPENARRAY(TVarRec, (2.54*NewSize.cy/NewDPI))); break; case uInch: lbCSWidth->Caption = AnsiString(IDS_COMMON_WIDTH) + Format(" : %f", OPENARRAY(TVarRec, ((double)CanvasInfor.Width/CanvasInfor.DotsPerInch))); lbCSHeight->Caption = AnsiString(IDS_COMMON_HEIGHT) + Format(" : %f", OPENARRAY(TVarRec, ((double)CanvasInfor.Height/CanvasInfor.DotsPerInch))); edNSWidth->Text = Format("%f", OPENARRAY(TVarRec, ((double)NewSize.cx/NewDPI))); edNSHeight->Text = Format("%f", OPENARRAY(TVarRec, ((double)NewSize.cy/NewDPI))); break; case uDot: lbCSWidth->Caption = AnsiString(IDS_COMMON_WIDTH) + Format(" : %d", OPENARRAY(TVarRec, (CanvasInfor.Width))); lbCSHeight->Caption = AnsiString(IDS_COMMON_HEIGHT) + Format(" : %d", OPENARRAY(TVarRec, (CanvasInfor.Height))); edNSWidth->Text = Format("%d", OPENARRAY(TVarRec, ((int)NewSize.cx))); edNSHeight->Text = Format("%d", OPENARRAY(TVarRec, ((int)NewSize.cy))); break; } lbCSResolution->Caption =AnsiString(IDS_RESOLUTION) + Format(" : %d Dots/Inch", OPENARRAY(TVarRec, (CanvasInfor.DotsPerInch))); edNSResolution->Text = Format("%d", OPENARRAY(TVarRec, (NewDPI))); } //--------------------------------------------------------------------------- void __fastcall TResizeCanvasForm::edNSWHRKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(Key == 13) SelectNext((TWinControl *)Sender, true, true); ChangeSW = true; } //---------------------------------------------------------------------------