//--------------------------------------------------------------------- #include #pragma hdrstop #include "KNewCanvas.h" #include "Exception.h" //--------------------------------------------------------------------- #pragma link "TPSpin" #pragma resource "*.dfm" //--------------------------------------------------------------------- #define IDS_NEWCANVAS StringTable[0] #define IDS_PAPERSIZE StringTable[1] #define IDS_SIZETYPE StringTable[2] #define IDS_RESOLUTION StringTable[3] #define IDS_RANGE StringTable[4] #define IDS_PAPERORIENTATION StringTable[5] #define IDS_PORTRAIT StringTable[6] #define IDS_LANDSCAPE StringTable[7] #define IDS_DEFAULT StringTable[8] //--------------------------------------------------------------------- __fastcall TNewCanvasForm::TNewCanvasForm(TComponent* AOwner) : TForm(AOwner) { //============================================================ StringTable.Create(DirectoryItem, Language, "KNewCanvas"); SetSmallFont(Font); Caption = IDS_NEWCANVAS; GroupBox1->Caption = IDS_PAPERSIZE; Label1->Caption = IDS_SIZETYPE; Label2->Caption = IDS_COMMON_WIDTH; Label4->Caption = IDS_COMMON_HEIGHT; Label6->Caption = IDS_RESOLUTION; Label7->Caption = IDS_RANGE; GroupBox2->Caption = IDS_PAPERORIENTATION; rbPort->Caption = IDS_PORTRAIT; rbLand->Caption = IDS_LANDSCAPE; rgUnit->Caption = IDS_COMMON_UNIT; BtnDefault->Caption = IDS_DEFAULT; BtnOK->Caption = IDS_COMMON_BUTTONOK; BtnCancel->Caption = IDS_COMMON_BUTTONCANCEL; //============================================================ } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::FormCreate(TObject *Sender) { cbSizeType->ItemIndex = 0; CanvasInfor.Orientation = coPortrait; TIniFile *IniFile = new TIniFile(DirectoryItem+"\\Environment.ini"); if (IniFile) { CanvasInfor.DotsPerInch = IniFile->ReadInteger("CanvasInfor", "DPI", 160); CanvasInfor.SetSize(IniFile->ReadInteger("MainImage", "Size", 0)); //2001.4.2 by lhskys ȯ°æ¼³Á¤ -> Á¾ÀÌ Size cbSizeType->ItemIndex = IniFile->ReadInteger("MainImage", "Size", 0); //2001.4.2 by lhskys ȯ°æ¼³Á¤ -> Á¾ÀÌ Size seDPI->Value = CanvasInfor.DotsPerInch; delete IniFile; } FUnit = uCm; switch (cbSizeType->ItemIndex) { case 0: CanvasInfor.SetSize(cstA4); break; case 1: CanvasInfor.SetSize(cstA3); break; case 2: CanvasInfor.SetSize(cstA2); break; case 3: CanvasInfor.SetSize(cstA1); break; case 4: CanvasInfor.SetSize(cstA0); break; case 5: CanvasInfor.SetSize(cstLetter); break; //k3dogs letter case 6: CanvasInfor.SetSize(cstLegal); break; case 7: CanvasInfor.SetSize(cstTabloid); break; } bEdit = true; Review(); } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::cbSizeTypeChange(TObject *Sender) { // if (cbSizeType->ItemIndex==4) { if (cbSizeType->ItemIndex==8) { //k3dogs letter CanvasInfor.SizeType = cstFree; edWidth->Enabled = true; edHeight->Enabled = true; GroupBox2->Enabled = false; edWidth->SetFocus(); CanvasInfor.Orientation = coPortrait; rbPort->Checked = true; } else { switch (cbSizeType->ItemIndex) { case 0: CanvasInfor.SetSize(cstA4); break; case 1: CanvasInfor.SetSize(cstA3); break; case 2: CanvasInfor.SetSize(cstA2); break; case 3: CanvasInfor.SetSize(cstA1); break; case 4: CanvasInfor.SetSize(cstA0); break; case 5: CanvasInfor.SetSize(cstLetter); break; //k3dogs letter case 6: CanvasInfor.SetSize(cstLegal); break; //k3dogs letter case 7: CanvasInfor.SetSize(cstTabloid); break; } edWidth->Enabled = false; edHeight->Enabled = false; GroupBox2->Enabled = true; cbSizeType->SetFocus(); } Review(); } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::edWidthChange(TObject *Sender) { if (bEdit && edWidth->Text.Length() > 0) { switch (FUnit) { case uInch: CanvasInfor.Width = StrToFloat(edWidth->Text)*CanvasInfor.DotsPerInch; break; case uCm: CanvasInfor.Width = StrToFloat(edWidth->Text)*CanvasInfor.DotsPerInch/2.54; break; default: CanvasInfor.Width = StrToInt(edWidth->Text); } } } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::edWidthEnter(TObject *Sender) { if (edWidth->Text.Length()==0) { MessageDlg(IDS_MESSAGE_INPUTNUMBER, mtError, TMsgDlgButtons() << mbOK, 0); edWidth->SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::edHeightChange(TObject *Sender) { if (bEdit && edHeight->Text.Length() > 0) { switch (FUnit) { case uInch: CanvasInfor.Height = StrToFloat(edHeight->Text)*CanvasInfor.DotsPerInch; break; case uCm: CanvasInfor.Height = StrToFloat(edHeight->Text)*CanvasInfor.DotsPerInch/2.54; break; default: CanvasInfor.Height = StrToInt(edHeight->Text); } } } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::edHeightEnter(TObject *Sender) { if (edHeight->Text.Length()==0) { MessageDlg(IDS_MESSAGE_INPUTNUMBER, mtError, TMsgDlgButtons() << mbOK, 0); edHeight->SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::seDPIChange(TObject *Sender) { if (seDPI->Text.Length() > 0) { Review(); } } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::seDPIExit(TObject *Sender) { int index; CanvasInfor.DotsPerInch = seDPI->Value; index = cbSizeType->ItemIndex; cbSizeType->Clear(); cbSizeType->Items->Add("A4 Size (" + AnsiString(CanvasInfor.DotsPerInch * 7.8) + " Dot * " + AnsiString(CanvasInfor.DotsPerInch * 11) + " Dot)"); cbSizeType->Items->Add("A3 Size (" + AnsiString(CanvasInfor.DotsPerInch * 11) + " Dot * " + AnsiString(CanvasInfor.DotsPerInch * 15.6) + " Dot)"); cbSizeType->Items->Add("A2 Size (" + AnsiString(CanvasInfor.DotsPerInch * 15.6) + " Dot * " + AnsiString(CanvasInfor.DotsPerInch * 22) + " Dot)"); cbSizeType->Items->Add("A1 Size (" + AnsiString(CanvasInfor.DotsPerInch * 22) + " Dot * " + AnsiString(CanvasInfor.DotsPerInch * 31.2) + " Dot)"); cbSizeType->Items->Add("A0 Size (" + AnsiString(CanvasInfor.DotsPerInch * 31.2) + " Dot * " + AnsiString(CanvasInfor.DotsPerInch * 44) + " Dot)"); cbSizeType->Items->Add("Letter Size (" + AnsiString(CanvasInfor.DotsPerInch * 8.0) + " Dot * " + //k3dogs letter AnsiString(CanvasInfor.DotsPerInch * 10.3) + " Dot)"); //k3dogs letter cbSizeType->Items->Add("Legal Size (" + AnsiString(CanvasInfor.DotsPerInch * 8.0) + " Dot * " + AnsiString(CanvasInfor.DotsPerInch * 13.2) + " Dot)"); cbSizeType->Items->Add("Tabloid Size (" + AnsiString(CanvasInfor.DotsPerInch * 10.3) + " Dot * " + AnsiString(CanvasInfor.DotsPerInch * 16.0) + " Dot)"); cbSizeType->Items->Add("User Defines"); cbSizeType->ItemIndex = index; } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::rbPortClick(TObject *Sender) { CanvasInfor.Orientation = coPortrait; Review(); } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::rbLandClick(TObject *Sender) { CanvasInfor.Orientation = coLandscape; Review(); } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::rgUnitClick(TObject *Sender) { switch (rgUnit->ItemIndex) { case 0: FUnit = uCm; break; case 1: FUnit = uInch; break; case 2: FUnit = uDot; break; } Review(); } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::BtnDefaultClick(TObject *Sender) { CanvasInfor.Orientation = coPortrait; CanvasInfor.DotsPerInch = 160; FUnit = uCm; switch (cbSizeType->ItemIndex) { case 0: CanvasInfor.SetSize(cstA4); break; case 1: CanvasInfor.SetSize(cstA3); break; case 2: CanvasInfor.SetSize(cstA2); break; case 3: CanvasInfor.SetSize(cstA1); break; case 4: CanvasInfor.SetSize(cstA0); break; case 5: CanvasInfor.SetSize(cstLetter); break; //k3dogs letter case 6: CanvasInfor.SetSize(cstLegal); break; case 7: CanvasInfor.SetSize(cstTabloid); break; } Review(); } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::spEditChange(TObject *Sender) { TPSpinEdit *sp = (TPSpinEdit *) Sender; if (sp->Text.Length() > 0) { Review(); } } //--------------------------------------------------------------------- // Private Methods //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::Review() { short dpi; int hor, ver; int index; bEdit = false; if (CanvasInfor.Orientation==coPortrait) { hor = CanvasInfor.Width; ver = CanvasInfor.Height; } else { hor = CanvasInfor.Height; ver = CanvasInfor.Width; } lbWale->Caption = Format("%d Wale", OPENARRAY(TVarRec, ((int)(hor*seWPI->Value/CanvasInfor.DotsPerInch)))); lbCourse->Caption = Format("%d Course", OPENARRAY(TVarRec, ((int)(ver*seCPI->Value/CanvasInfor.DotsPerInch)))); index = cbSizeType->ItemIndex; cbSizeType->Clear(); switch (FUnit) { case uInch: cbSizeType->Items->Add("A4 Size (7.8 Inch * 11.0 Inch)"); cbSizeType->Items->Add("A3 Size (11.0 Inch * 15.6 Inch)"); cbSizeType->Items->Add("A2 Size (15.6 Inch * 22.0 Inch)"); cbSizeType->Items->Add("A1 Size (22.0 Inch * 31.2 Inch)"); cbSizeType->Items->Add("A0 Size (31.2 Inch * 44.0 Inch)"); cbSizeType->Items->Add("Letter Size (8.0 Inch * 10.3 Inch)"); //k3dogs letter cbSizeType->Items->Add("Legal Size (8.0 Inch * 13.2 Inch)"); cbSizeType->Items->Add("Tabloid Size (10.3 Inch * 16.0 Inch)"); cbSizeType->Items->Add("User Defines"); edWidth->Text = (double)hor / CanvasInfor.DotsPerInch; edHeight->Text = (double)ver / CanvasInfor.DotsPerInch; Label3->Caption = "Inch"; Label5->Caption = "Inch"; break; case uCm: cbSizeType->Items->Add("A4 Size (19.812 Cm * 27.94 Cm)"); cbSizeType->Items->Add("A3 Size (27.94 Cm * 39.624 Cm)"); cbSizeType->Items->Add("A2 Size (39.624 Cm * 55.88 Cm)"); cbSizeType->Items->Add("A1 Size (55.88 Cm * 79.248 Cm)"); cbSizeType->Items->Add("A0 Size (79.248 Cm * 111.76 Cm)"); cbSizeType->Items->Add("Letter Size (20.32 Cm * 26.162 Cm)"); //k3dogs letter cbSizeType->Items->Add("Legal Size (20.32 Cm * 33.528 Cm)"); cbSizeType->Items->Add("Tabloid Size (26.162 Cm * 40.64 Cm)"); cbSizeType->Items->Add("User Defines"); edWidth->Text = 2.54 * hor / CanvasInfor.DotsPerInch; edHeight->Text = 2.54 * ver / CanvasInfor.DotsPerInch; Label3->Caption = "Cm"; Label5->Caption = "Cm"; break; default: dpi = seDPI->Value; cbSizeType->Items->Add("A4 Size (" + AnsiString(dpi*7.8) + " Dot * " + AnsiString(dpi*11) + " Dot)"); cbSizeType->Items->Add("A3 Size (" + AnsiString(dpi*11) + " Dot * " + AnsiString(dpi*15.6) + " Dot)"); cbSizeType->Items->Add("A2 Size (" + AnsiString(dpi*15.6) + " Dot * " + AnsiString(dpi*22) + " Dot)"); cbSizeType->Items->Add("A1 Size (" + AnsiString(dpi*22) + " Dot * " + AnsiString(dpi*31.2) + " Dot)"); cbSizeType->Items->Add("A0 Size (" + AnsiString(dpi*31.2) + " Dot * " + AnsiString(dpi*44) + " Dot)"); cbSizeType->Items->Add(Format("Letter Size (%d Dot * %d Dot)", //k3dogs letter OPENARRAY(TVarRec, (int(dpi * 8.0), int(dpi * 10.3))))); // cbSizeType->Items->Add(Format("Legal Size (%d Dot * %d Dot)", //k3dogs letter OPENARRAY(TVarRec, (int(dpi * 8.0), int(dpi * 13.2))))); // cbSizeType->Items->Add(Format("Tabloid Size (%d Dot * %d Dot)", //k3dogs letter OPENARRAY(TVarRec, (int(dpi * 10.3), int(dpi * 16.0))))); // cbSizeType->Items->Add("User Defines"); edWidth->Text = hor; edHeight->Text = ver; Label3->Caption = "Dot"; Label5->Caption = "Dot"; break; } cbSizeType->ItemIndex = index; bEdit = true; } //--------------------------------------------------------------------------- void __fastcall TNewCanvasForm::edKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if (Key == VK_RETURN) Review(); } //---------------------------------------------------------------------------