//-------------------------------------------------------------------------- #include #include #include #pragma hdrstop #include "MainMenu.h" #include "Style_F.h" #include "MainImage.h" #include "Palette.h" #include "Undo.h" #include "VecDraw.h" #include "Dialog_F.h" #include "UserColor_F.h" #include "define.h" #include "LogData.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "RzButton" #pragma link "RzCmboBx" #pragma link "RzPanel" #pragma link "RzShellCtrls" #pragma link "RzTreeVw" #pragma link "RzLabel" #pragma link "RzRadChk" #pragma resource "*.dfm" //--------------------------------------------------------------------------- #define IDS_STYLEPATTERNCHART StringTable[0] #define IDS_BITMAPSTYLE StringTable[1] #define IDS_COLUMNMENU StringTable[2] #define IDS_CELLMENU StringTable[3] #define IDS_INSERT StringTable[4] #define IDS_OVERWRITE StringTable[5] #define IDS_FIX StringTable[6] #define IDS_IMAGEDEL StringTable[7] #define IDS_ONLYCOLORSAVE StringTable[8] #define IDS_VECTORSTYLE StringTable[9] #define IDS_SEARCH StringTable[10] #define IDS_ALLSEARCH StringTable[11] #define IDS_STYLEBAR StringTable[12] #define IDS_POPUP_NORMAL StringTable[13] #define IDS_POPUP_MIRROR StringTable[14] //--------------------------------------------------------------------------- TStyleForm *StyleForm; typedef struct tagImgdata { TUnionBitmap *sBitmap; RECT rect; // MainImage ¿¡¼­ÀÇ À§Ä¡... bool draw; } TImgdata; //--------------------------------------------------------------------------- __fastcall TStyleForm::TStyleForm(TComponent* Owner) : TForm(Owner) { BEGIN_LOG(""); hWnd = ((TWinControl *)Owner)->Handle; Data = NULL; Imgstore = NULL; //============================================================== StringTable.Create(DirectoryItem, Language, "Style"); SetSmallFont(Font); SetSmallFont(rztbExit->Font); SetSmallFont(StringGrid->Font); RzPanelHorz->BorderInner = fsNone; RzPanelStyle->BorderInner = fsNone; RzPanelBar->BorderInner = fsNone; Caption = IDS_STYLEPATTERNCHART; RzLabel1->Caption = IDS_STYLEBAR; RzLabel2->Caption = IDS_COLUMNMENU; RzLabel3->Caption = IDS_CELLMENU; rztbInsert->Caption = IDS_INSERT; rztbOverwrite->Caption = IDS_OVERWRITE; rztbDelete->Caption = IDS_COMMON_DELETE; rztbFixStyle->Caption = IDS_FIX; rztbDeleteStyle->Caption = IDS_IMAGEDEL; rztbExit->Caption = IDS_COMMON_EXIT; sbSearch->Hint = IDS_SEARCH; //============================================================== STR_VECTORSTYLE = IDS_VECTORSTYLE; STR_BITMAPSTYLE = IDS_BITMAPSTYLE; rzbitbtnBitmap->Caption = IDS_BITMAPSTYLE; rzbitbtnVector->Caption = IDS_VECTORSTYLE; AllSearch->Caption = IDS_ALLSEARCH; MirrorLeft->Caption = IDS_POPUP_NORMAL; MirrorRight->Caption = IDS_POPUP_MIRROR; isVector = VecDraw->bVectorStyle; // Styleform exitÇØµµ »ç¿ëÇÏ´ø ȯ°æ ³²°Ô.. if (isVector) rzbitbtnVector->Down = true; /* rzcbMenuType->Items->Clear(); rzcbMenuType->Items->Add(IDS_STYLEMENU); rzcbMenuType->Items->Add(IDS_COLUMNMENU); rzcbMenuType->Items->Add(IDS_CELLMENU); rzcbMenuType->Items->Add(IDS_IMAGEMENU); */ //lbMenuType->Caption = IDS_LBMENUTYPE; Data = NULL; SearchFile = NULL; Imgstore = NULL; END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::FormCreate(TObject *Sender) { // } //--------------------------------------------------------------------------- void __fastcall TStyleForm::FormClose(TObject *Sender, TCloseAction &Action) { BEGIN_LOG(""); PostMessage(hWnd, TPM_EXITFUNCTION, 0, 0); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::FormShow(TObject *Sender) { BEGIN_LOG(""); if (rbStyle->Checked) { if (MainImageForm->WorkArea->Mask && MainImageForm->iMainImage->uBitmap->BitsPerPixel==8) { rztbOverwrite->Enabled = true; rztbInsert->Enabled = true; } else if (MainImageForm->WorkArea->Mask && MainImageForm->iMainImage->uBitmap->BitsPerPixel == 24 && isVector) { rztbOverwrite->Enabled = true; //090721 by david rztbInsert->Enabled = true; } else { rztbOverwrite->Enabled = false; rztbInsert->Enabled = false; } } else { rztbInsert->Enabled = false; } END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::sbPreviousClick(TObject *Sender) { BEGIN_LOG(""); if (rbStyleBar->Checked && rztbOverwrite->Down) rztbOverwrite->Down = false; if(currentIndex == 0) { END_LOG; return; } DeleteOldData(currentIndex); currentIndex--; ChangeStyleData(); StringGrid->Repaint(); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::sbNextClick(TObject *Sender) { BEGIN_LOG(""); if (rbStyleBar->Checked && rztbOverwrite->Down) rztbOverwrite->Down = false; if(currentIndex == Data->Count-1) { END_LOG; return; } DeleteOldData(currentIndex); currentIndex++; ChangeStyleData(); StringGrid->Repaint(); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::ComboBoxChange(TObject *Sender) { if (ComboBox->ItemIndex < 0) return; // added by maxleo21c (05.07.22) // list out of bound error¹ß»ý -1·Î µé¾î ¿À´Â °æ¿ì BEGIN_LOG(""); if (rbStyleBar->Checked && rztbOverwrite->Down) rztbOverwrite->Down = false; DeleteOldData(currentIndex); currentIndex = ComboBox->ItemIndex; ChangeStyleData(); StringGrid->Repaint(); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::StringGridClick(TObject *Sender) { BEGIN_LOG(""); TDirectoryInfor *firdi, *secdi; TFileInfor *fi; int column = StringGrid->Col; int row = StringGrid->Row; String dn, fn, cmfn, cmfn2; TPException ec = EC_NONE; bool bFileChanagedAndDelete = false; String fileName; int btn; if (Data->Count<=0) { END_LOG; return; } if (column) { if (rbHorz->Checked && rztbDelete->Down) { //Hor rztbDelete->Down = false; firdi = (TDirectoryInfor *) Data->Items[currentIndex]; if (firdi->pDirectoryList) { if (column <= firdi->pDirectoryList->Count) { secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[column-1]; dn = SearchFile->InitDirectory + String("\\") + firdi->Name + String("\\") + secdi->Name; DeleteFolder(dn); DeleteOldData(currentIndex); UpdateData(); ChangeStyleData(); StringGrid->Repaint(); } } } else if (rbStyle->Checked && rztbInsert->Down) { //Ver rztbInsert->Down = false; if (!MainImageForm->WorkArea->Mask) {END_LOG; return;} if(row) { BlackAndWhite(); if(BWBreak) { END_LOG; return; } firdi = (TDirectoryInfor *) Data->Items[currentIndex]; if (firdi->pDirectoryList) { if (column <= firdi->pDirectoryList->Count) { secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[column-1]; dn = SearchFile->InitDirectory + String("\\") + firdi->Name + String("\\") + secdi->Name; TDialogForm *inputForm = new TDialogForm(this); inputForm->SetInputForm("Input Box", "Name"); if(inputForm->ShowModal() == mrOk) { fn = inputForm->InputEdit->Text; #ifdef TRIAL if(ExtractFileExt(fn) != String(".ttex")) fn += String(".ttex"); #else if(ExtractFileExt(fn) != String(".ttex")) { if (MainImageForm->iMainImage->uBitmap->BitsPerPixel == 24) { //090721 by david fn += String(".vst"); } else { fn += String(".tex"); } } #endif if(secdi->pFileList != NULL){ for (int i=0; ipFileList->Count; i++) { fi = (TFileInfor *) secdi->pFileList->Items[i]; cmfn = fi->Name; cmfn2 = fn; if (cmfn == cmfn2) { btn = EXCEPTION_MESSAGE2_OKCANCEL(EC_FILE_EXIST_ALREADY, (IDS_MESSAGE_REALLYFILESAVE).c_str()); if (btn == mrOk) { MakeBackupFile(dn, fn); fileName = dn + String("\\") + fn; if (MainImageForm->iMainImage->uBitmap->BitsPerPixel == 24) {//090721 if ((ec = MainImageForm->SaveToVST(dn, fn, cmZLib, TextileFileVersion)) != EC_NONE){ BackupFileRollback(dn, fn); EXCEPTION_MESSAGE_OK(ec); } } else { if ((ec = SaveToFile(fileName)) != EC_NONE){ BackupFileRollback(dn, fn); EXCEPTION_MESSAGE_OK(ec); } } goto next; } else { goto next; } } } } if (MainImageForm->iMainImage->uBitmap->BitsPerPixel == 24) {//090721 by david if ((ec = MainImageForm->SaveToVST(dn, fn, cmZLib, TextileFileVersion)) != EC_NONE){ EXCEPTION_MESSAGE_OK(ec); END_LOG; return; } } else { fileName = dn + String("\\") + fn; if ((ec = SaveToFile(fileName)) != EC_NONE){ EXCEPTION_MESSAGE_OK(ec); END_LOG; return; } } next: DeleteOldData(currentIndex); UpdateData(); ChangeStyleData(); StringGrid->Repaint(); } if(inputForm) delete inputForm; } } } } else if (rbStyle->Checked && rztbDelete->Down) { //Ver rztbDelete->Down = false; if(row) { firdi = (TDirectoryInfor *) Data->Items[currentIndex]; if (firdi->pDirectoryList) { if (column <= firdi->pDirectoryList->Count) { secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[column-1]; if (secdi->pFileList) { if (row <= secdi->pFileList->Count){ fi = (TFileInfor *) secdi->pFileList->Items[row-1]; dn = SearchFile->InitDirectory + String("\\") + fi->Path + String("\\") + fi->Name; DeleteFolder(dn); DeleteOldData(currentIndex); UpdateData(); ChangeStyleData(); StringGrid->Repaint(); } } } } } } else if (rztbOverwrite->Down) { rztbOverwrite->Down = false; if (!MainImageForm->WorkArea->Mask) {END_LOG; return;} if(row) { BlackAndWhite(); if(BWBreak) { END_LOG; return; } firdi = (TDirectoryInfor *) Data->Items[currentIndex]; if (firdi->pDirectoryList) { if (column <= firdi->pDirectoryList->Count) { secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[column-1]; if (secdi->pFileList) { if (row <= secdi->pFileList->Count){ fi = (TFileInfor *) secdi->pFileList->Items[row-1]; dn = SearchFile->InitDirectory + String("\\") + fi->Path; fn = fi->Name; fileName = dn + String("\\") + fn; //¿øº» ÆÄÀÏ if (MainImageForm->iMainImage->uBitmap->BitsPerPixel == 24) {//090721 by david if (ExtractFileExt(fn) == String(".ttex")) { fn = fn.SubString(1, fn.Length()-4) + String("vst"); bFileChanagedAndDelete = true; } else if (ExtractFileExt(fn) == String(".tex")) { fn = fn.SubString(1, fn.Length()-3) + String("vst"); bFileChanagedAndDelete = true; } btn = mrOk; if (bFileChanagedAndDelete && FileExists(FullPathName(dn,fn))) { btn = EXCEPTION_MESSAGE2_OKCANCEL(EC_FILE_EXIST_ALREADY, (IDS_MESSAGE_REALLYFILESAVE).c_str()); } if (btn == mrOk) { if ((ec = MainImageForm->SaveToVST(dn, fn, cmZLib, TextileFileVersion)) != EC_NONE){ EXCEPTION_MESSAGE_OK(ec); END_LOG; return; } else { if (bFileChanagedAndDelete) { DeleteFile(fileName); } DeleteOldData(currentIndex); } } } else { if (ExtractFileExt(fn) == String(".vst")) { fn = fn.SubString(1, fn.Length()-3); #ifdef TRIAL fn += String("ttex"); #else fn += String("tex"); #endif bFileChanagedAndDelete = true; } btn = mrOk; if (bFileChanagedAndDelete && FileExists(FullPathName(dn, fn))) { btn = EXCEPTION_MESSAGE2_OKCANCEL(EC_FILE_EXIST_ALREADY, (IDS_MESSAGE_REALLYFILESAVE).c_str()); } if (btn == mrOk) { MakeBackupFile(dn, fn); //fileName = fileName.LowerCase(); // ´ë¹®ÀÚÀΰæ¿ì ¾ÈµÇ¾ú´ø°æ¿ì¸¦ À§ÇØ if ((ec = SaveToFile(FullPathName(dn, fn))) != EC_NONE){ BackupFileRollback(dn, fn); EXCEPTION_MESSAGE_OK(ec); } else { if (bFileChanagedAndDelete) { DeleteFile(fileName); } DeleteOldData(currentIndex); } } } UpdateData(); ChangeStyleData(); StringGrid->Repaint(); } } } } } } } END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::StringGridDrawCell(TObject *Sender, int Col, int Row, TRect &Rect, TGridDrawState State) { BEGIN_LOG(""); int x, y; String str; TFileInfor *fi; TDirectoryInfor *firdi, *secdi; TRect r; HDC hDC = NULL; TPException ec = EC_NONE; if (Data->Count>0) firdi = (TDirectoryInfor *) Data->Items[currentIndex]; else { END_LOG; return; } if (Col){ if (Row) { if (firdi->pDirectoryList) { if (Col <= firdi->pDirectoryList->Count) { secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[Col-1]; if (secdi->pFileList) { if (Row <= secdi->pFileList->Count) { fi = (TFileInfor *) secdi->pFileList->Items[Row-1]; if ((hDC = fi->tBitmap->CreateDC()) == NULL) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } //090804 by david if (ExtractFileExt(fi->Name) == String(".vst")) { //vstÆÄÀÏÀº srccopyÇÑ´Ù. BitBlt(StringGrid->Canvas->Handle, Rect.Left+5, Rect.Top+5, fi->tBitmap->Width, fi->tBitmap->Height, hDC, 0, 0, SRCCOPY); } else { BitBlt(StringGrid->Canvas->Handle, Rect.Left+5, Rect.Top+5, fi->tBitmap->Width, fi->tBitmap->Height, hDC, 0, 0, NOTSRCCOPY); } fi->tBitmap->DeleteDC(hDC); //================================================= r.Left = Rect.Left+5; r.Top = Rect.Top+110; r.Right = Rect.Left+85; r.Bottom = Rect.Top+130; StringGrid->Canvas->TextRect(r, Rect.Left+5, Rect.Top+115, fi->Name); } } } } } else { if (firdi->pDirectoryList) { if (Col <= firdi->pDirectoryList->Count) { secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[Col-1]; str = secdi->Name; x = ((Rect.Right - Rect.Left) - StringGrid->Canvas->TextWidth(str)) / 2; y = ((Rect.Bottom - Rect.Top) - StringGrid->Canvas->TextHeight(str)) / 2; StringGrid->Canvas->TextRect(Rect, Rect.Left + x, Rect.Top + y, str); } } } } else { if (Row) { str = String(Row); x = ((Rect.Right - Rect.Left) - StringGrid->Canvas->TextWidth(str)) / 2; y = ((Rect.Bottom - Rect.Top) - StringGrid->Canvas->TextHeight(str)) / 2; StringGrid->Canvas->TextRect(Rect, Rect.Left + x, Rect.Top + y, str); } } END_LOG; return; fail: EXCEPTION_MESSAGE_OK(ec); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::StringGridMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { BEGIN_LOG(""); TDirectoryInfor *firdi, *secdi; TFileInfor *fi; TGridCoord grid = StringGrid->MouseCoord(X, Y); if (Button == mbRight) { if (Data->Count > 0) { firdi = (TDirectoryInfor *) Data->Items[currentIndex]; if (firdi->pDirectoryList) { if (grid.X && grid.X <= firdi->pDirectoryList->Count) { secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[grid.X-1]; if (secdi->pFileList) { if (grid.Y && grid.Y <= secdi->pFileList->Count) { fi = (TFileInfor*) secdi->pFileList->Items[grid.Y-1]; path = SearchFile->InitDirectory + String("\\") + fi->Path + String("\\") + fi->Name; loadOk = true; END_LOG; return; } } } } } } loadOk = false; END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::StringGridDblClick(TObject *Sender) { if (rztbDelete->Down || rztbOverwrite->Down || rztbDeleteStyle->Down) return; BEGIN_LOG(""); TDirectoryInfor *firdi, *secdi; TFileInfor *fi; if (Data->Count > 0) { firdi = (TDirectoryInfor *) Data->Items[currentIndex]; if (firdi->pDirectoryList) { if (StringGrid->Col && StringGrid->Col <= firdi->pDirectoryList->Count) { secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[StringGrid->Col-1]; if (secdi->pFileList) { if (StringGrid->Row && StringGrid->Row <= secdi->pFileList->Count) { fi = (TFileInfor*) secdi->pFileList->Items[StringGrid->Row-1]; path = SearchFile->InitDirectory + String("\\") + fi->Path + String("\\") + fi->Name; mirror = false; LoadToMainImage(); } } } } } END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::MirrorLeftClick(TObject *Sender) { BEGIN_LOG(""); if (loadOk) { mirror = false; LoadToMainImage(); } END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::MirrorRightClick(TObject *Sender) { BEGIN_LOG(""); if (loadOk) { mirror = true; LoadToMainImage(); } END_LOG; } //--------------------------------------------------------------------------- ///// Private Method ////////////////////////////////////////////////// //--------------------------------------------------------------------------- void __fastcall TStyleForm::DeleteOldData(int Index) { BEGIN_LOG(""); TDirectoryInfor *firdi, *secdi; TFileInfor *fi; int i, j; if (Index == -1) { END_LOG; return; } if (Data->Count > 0) { firdi = (TDirectoryInfor *) Data->Items[Index]; if (firdi->pDirectoryList) { for (i=0; ipDirectoryList->Count; i++) { secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[i]; if (secdi->pFileList) { for (j=0; jpFileList->Count; j++) { fi = (TFileInfor *) secdi->pFileList->Items[j]; if (fi->tBitmap) { delete fi->tBitmap; fi->tBitmap = NULL; } } } } } } END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::UpdateData() { BEGIN_LOG(""); TDirectoryInfor *di, *tdi; int i, cnt; while(Data->Count>0) { di = (TDirectoryInfor *) Data->Last(); Data->Remove(di); } SearchFile->Create(this); di = (TDirectoryInfor *) SearchFile->RootDirectory(); if (di->pDirectoryList) { cnt = di->pDirectoryList->Count; ComboBox->Items->Clear(); // CB5¾Ö¼­´Â °°Àº À̸§ÀÇ AddObject¿¡ ´ëÇÏ¿© ¶Ç´Ù¸¥°Ô »ý±â¹Ç·Î ¸®¼ÂÀ» ¿äÇÑ´Ù// by jeegeo for (i=0; ipDirectoryList->Items[i]; ComboBox->Items->AddObject(tdi->Name, (TObject *)vsList); //Strings[i] = tdi->Name; Data->Add(tdi); } } END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::ChangeStyleData() { BEGIN_LOG(""); TDirectoryInfor *firdi, *secdi; TFileInfor *fi = NULL; HANDLE hFile = INVALID_HANDLE_VALUE; // int FH, i, j, x, y; int i, j, x, y; TTexVersion ver; RGBQUAD rgb[2]; Byte *sl; HDC hDC = NULL; Byte *tb; TPException ec = EC_NONE; TCanvas *Canvas = NULL; TGraphicFileFormat gff; if (currentIndex == -1) { END_LOG; return; } if (Data->Count > 0) { firdi = (TDirectoryInfor *) Data->Items[currentIndex]; ComboBox->Text = firdi->Name; if (firdi->pDirectoryList) { for (i=0; ipDirectoryList->Count; i++) { secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[i]; if (secdi->pFileList) { for (j=0; jpFileList->Count; j++) { fi = (TFileInfor *) secdi->pFileList->Items[j]; if ((fi->tBitmap = new TTexpiaBitmap) == NULL) {ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail;} if ((hFile = CreateFile((SearchFile->InitDirectory + String("\\") + fi->Path + String("\\") + fi->Name).c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) { goto fail; } gff = FindExtension(ExtractFileExt(fi->Name)); #ifdef TRIAL if(ExtractFileExt(fi->Name) == String(".ttex")) { if (LoadFromTexpiaStyleTag(hFile, fi, gff, &ver, true) != EC_NONE) { if (fi->tBitmap) { delete fi->tBitmap; fi->tBitmap = NULL; } continue; } } else { if (LoadFromTexpiaStyleTag(hFile, fi, gff, &ver) != EC_NONE) { if (fi->tBitmap) { delete fi->tBitmap; fi->tBitmap = NULL; } continue; } } #else if (LoadFromTexpiaStyleTag(hFile, fi, gff, &ver) != EC_NONE) { if (fi->tBitmap) { delete fi->tBitmap; fi->tBitmap = NULL; } continue; } #endif //090804 by david if (ver.Texpia =='P' && ver.Method =='T' && ver.Number >= 210 && ExtractFileExt(fi->Name) != String(".vst")) { rgb[0].rgbRed = 255; rgb[0].rgbGreen = 255; rgb[0].rgbBlue = 255; rgb[1].rgbRed = 0; rgb[1].rgbGreen = 0; rgb[1].rgbBlue = 0; if ((hDC = fi->tBitmap->CreateDC()) == NULL) {ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail;} SetDIBColorTable(hDC, 0, 2, rgb); fi->tBitmap->DeleteDC(hDC); if ((fi->tBitmap->StartScanLine()) == false) {ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail;} for (y = 0; y < fi->tBitmap->Height; y++) { tb = fi->tBitmap->GetScanLine(y); for (x = 0; x< fi->tBitmap->Width; x++) { tb[x] = tb[x]-1; } fi->tBitmap->PutScanLine(y); } fi->tBitmap->StopScanLine(); } CloseHandle(hFile); hFile = INVALID_HANDLE_VALUE; } } } } } END_LOG; return; fail : if(fi->tBitmap)fi->tBitmap = NULL; if (hFile!=INVALID_HANDLE_VALUE) CloseHandle(hFile); if (ec == EC_NONE) EXCEPTION_MESSAGE_OK(EC_FILE_NOT_OPEN); else EXCEPTION_MESSAGE_OK(ec); END_LOG; } //--------------------------------------------------------------------------- int __fastcall TStyleForm::GetCurrentIndex(String str) { BEGIN_LOG(""); TDirectoryInfor *tdi; int cnt = Data->Count; if (cnt>0) { for (int i = 0; i < cnt; i++) { tdi = (TDirectoryInfor *) Data->Items[i]; if (tdi->Name == str) { END_LOG; return i; } } } END_LOG; return -1; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::DeleteFolder(String FolderName) { BEGIN_LOG(""); SHFILEOPSTRUCT shfile; Char *ucFrom = NULL; TPException ec = EC_NONE; memset(&shfile, 0, sizeof(SHFILEOPSTRUCT)); shfile.hwnd = Handle; shfile.wFunc = FO_DELETE; if ((ucFrom = (Char *) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(Char) * FolderName.Length()+2)) == NULL) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } _tcscpy(ucFrom, FolderName.c_str()); shfile.pFrom = ucFrom; shfile.fFlags = FOF_ALLOWUNDO ; SHFileOperation(&shfile); HeapFree(GetProcessHeap(), 0, ucFrom); END_LOG; return; fail: EXCEPTION_MESSAGE_OK(ec); END_LOG; } //--------------------------------------------------------------------------- int __fastcall TStyleForm::SaveToFile(String fn) { BEGIN_LOG(""); TEXPIAFILEHEADER tpfh; TRect src; RGBQUAD rgb[256]; TTexpiaBitmap *tag = NULL; int ec = EC_NONE; HANDLE hFile = INVALID_HANDLE_VALUE; DWORD dwWrite; HDC dcTemp=NULL; TColorData *ColorMap; ColorMap = PaletteForm->DIB256Palette->Palette->ColorData[1]; BackupR = ColorMap->RGB.rgbRed; BackupG = ColorMap->RGB.rgbGreen; BackupB = ColorMap->RGB.rgbBlue; bool layer = false; try { if ((hFile = CreateFile(fn.c_str(), GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) { ec = EC_FILE_NOT_CREATE; SAVE_EXCEPTION(ec); goto fail; } //tpfh.Version = TexVersion('P', 'T', 222); tpfh.Version = TexVersion('P', 'T', TextileFileVersion); // 8.0ºÎÅÍ 300À¸·Î tpfh.CanvasInfor = MainImageForm->CanvasInfor; tpfh.BitsPerPixel = 8; tpfh.Compress = cmZLib; src = MainImageForm->WorkArea->Range; tpfh.CanvasInfor.DotsPerInch = tpfh.CanvasInfor.DotsPerInch; tpfh.CanvasInfor.SetSize(cstFree, src.Right-src.Left, src.Bottom-src.Top); PaletteForm->DIB256Palette->SetNormal(1,255, 255, 255); MainImageForm->Palette->ToRGBQUAD(rgb, 256); MainImageForm->iMainImage->ChangeRGBColors(rgb); if ((tag = new TTexpiaBitmap) == NULL) {ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail;} MakeTexpiaTag(tag, MainImageForm->iMainImage->uBitmap, src, 1); ////////////// if (isVector) { if ((dcTemp = tag->CreateDC())==NULL) goto fail; //VecDraw->TagDraw(dcTemp, src, 3); /* * -# Method 00000100(4) : ÇÑ Á¡ÀÌ¶óµµ Area¹Û¿¡ ÀÖÀ¸¸é ÀúÀåÇÏÁö ¾ÊÀ½ * -# Method 00001000(8) : ¼±ÅÃµÈ Object¸¸ ÀúÀåµÊ * -# Method 00010000(16) : Moptive Object ÀúÀåÀ¸·Î ÀÛ¾÷±¸¿ª°ú »ó°ü¾øÀÌ ÀúÀåÇÑ´Ù. * -# Method 00100000(32) : PatternÀ» Á¦¿Ü Çϰí ÀúÀå */ VecDraw->TagDraw(dcTemp, tag->Width, tag->Height, src, 4+32); tag->DeleteDC(dcTemp); dcTemp = NULL; } //////// Vector Tag By GreenFIsh if (MainImageForm->WorkArea && MainImageForm->WorkArea->Mask) { if (!SaveToTexpiaFile(hFile, MainImageForm->Palette, tpfh, tag, MainImageForm->iMainImage->uBitmap, &MainImageForm->WorkArea->Range)) { ec = EC_FILE_NOT_WRITE; SAVE_EXCEPTION(ec); goto fail; } } else { if (!SaveToTexpiaFile(hFile, MainImageForm->Palette, tpfh, tag, MainImageForm->iMainImage->uBitmap)) { ec = EC_FILE_NOT_WRITE; SAVE_EXCEPTION(ec); goto fail; } } if (tag) { delete tag; tag = NULL; } //090805 by david ¹öÀü ȣȯÀ» À§ÇØ Ãß°¡ -------------------------------- layer = false; if (!WriteFile(hFile, &layer, sizeof(bool), &dwWrite, NULL)) goto fail; //---------------------------------------------------------------------- /* À̰÷¿¡ Vector Save°¡ µé¾î°£´Ù */ if (isVector) { if (!VecDraw->SaveToFile(hFile, NULL, 4+32, tpfh.Version.Number, MainImageForm->Number)) { ec = EC_FILE_NOT_WRITE; SAVE_EXCEPTION(ec); goto fail; } } //========================= CloseHandle(hFile); hFile = INVALID_HANDLE_VALUE; PaletteForm->DIB256Palette->SetNormal(1,BackupR, BackupG, BackupB); } catch(...){ SAVE_EXCEPTION(EC_NO_MESSAGE); goto fail; } ::RepaintColor(); END_LOG; return ec; fail: MainImageForm->iMainImage->uBitmap->StopScanLine(); if (tag) { tag->StopScanLine(); delete tag; } if (hFile != INVALID_HANDLE_VALUE){ CloseHandle(hFile); DeleteFile(fn.c_str()); //shin À߸øµÈ ÆÄÀÏÀ̹ǷΠÁö¿î´Ù } ::RepaintColor(); if (ec == EC_NONE) { ec = EC_FILE_NOT_WRITE; SAVE_EXCEPTION(ec); } END_LOG; return ec; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::LoadToMainImage() { BEGIN_LOG(""); TEXPIAFILEHEADER tpfh; int x, y; TImgdata *id = NULL; RGBQUAD rgb[256]; Byte *sl; TPalette *spalette = NULL; TPItemImage *Image = MainImageForm->iMainImage; TPException ec = EC_NONE; HANDLE hFile = INVALID_HANDLE_VALUE; DWORD dwRead; bool vector, layer; if ((id = new TImgdata)==NULL) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } id->sBitmap = NULL; if ((id->sBitmap = new TUnionBitmap) == NULL) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if ((spalette = new TPalette)==NULL) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if ((hFile = CreateFile(path.c_str(),GENERIC_READ, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if (ExtractFileExt(path) == String(".vst")) { //by david 090804 //ÇöÀç ¹öÀü¿¡¼­ VST¸¦ ·ÎµåÇÏ´Â ºÎºÐÀ» ÀÌ¿ëÇϱ⠶§¹®¿¡ VSTÆÄÀÏ ¹öÀüÀÌ º¯°æµÇ¸é //À̺κР¶ÇÇÑ ¼öÁ¤ÇØ¾ß ÇÔ. EDataCode Code; //LoadVector()´Â VSTÆÄÀÏ Çì´õ ºÎºÐÀ» Àоî¿À´Â ÇÔ¼öÀÌ´Ù. if ((ec = VecDraw->LoadVector(hFile, spalette, tpfh, true))!=EC_NONE) goto fail; //tpfh.CanvasInfor.Width,tpfh.CanvasInfor.HeightÀÇ Å©±â°¡ ÇöÀç MainImage Canvasº¸´Ù Å©¸é //±× Å©±â¸¦ ÇöÀç CanvasÅ©±â·Î º¯°æ ½ÃŲ´Ù. if (tpfh.CanvasInfor.Width > MainImageForm->iMainImage->uBitmap->Width) tpfh.CanvasInfor.Width = MainImageForm->iMainImage->uBitmap->Width; if (tpfh.CanvasInfor.Height > MainImageForm->iMainImage->uBitmap->Height) tpfh.CanvasInfor.Height = MainImageForm->iMainImage->uBitmap->Height; //Merge¸ðµå¿¡¼­ È­¸é¿¡ º¸¿©ÁÖ´Â TMainImageForm::SubBitmapPosition()ÇÔ¼ö °è»ê ¶§¹®¿¡ //Àӽ÷ΠsubbitmapÀÌ ÇÊ¿äÇØ¼­ 256°ú °°ÀÌ Ã³¸®ÇÔ. if (!id->sBitmap->Create(tpfh.CanvasInfor.Width, tpfh.CanvasInfor.Height, 8)) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if (!ReadFile(hFile, &Code, sizeof(EDataCode), &dwRead, NULL)) goto fail; VecDraw->InitMerge(hFile, id->sBitmap->Width, mirror, true); // By GreenFish Vector File Merge CloseHandle(hFile); } else { #ifdef TRIAL if(ExtractFileExt(path) == String(".ttex")) { if ((ec = LoadFromTexpiaFile(hFile, spalette, tpfh, id->sBitmap, FindExtension(ExtractFileExt(path)), true, NULL, true))!=EC_NONE) goto fail; }else { if ((ec = LoadFromTexpiaFile(hFile, spalette, tpfh, id->sBitmap, FindExtension(ExtractFileExt(path))))!=EC_NONE) goto fail; } #else if ((ec = LoadFromTexpiaFile(hFile, spalette, tpfh, id->sBitmap, FindExtension(ExtractFileExt(path))))!=EC_NONE) goto fail; #endif UserColorLibForm->ThisFileHasUserColor(spalette); //tpfh.CanvasInfor.Width,tpfh.CanvasInfor.HeightÀÇ Å©±â°¡ ÇöÀç MainImage Canvasº¸´Ù Å©¸é //±× Å©±â¸¦ ÇöÀç CanvasÅ©±â·Î º¯°æ ½ÃŲ´Ù. if (tpfh.CanvasInfor.Width > MainImageForm->iMainImage->uBitmap->Width || tpfh.CanvasInfor.Height > MainImageForm->iMainImage->uBitmap->Height) { ec = EC_BIG_SIZE; goto fail; } //tpfh.Version.Texpia=='P' && tpfh.Version.Method=='C'ÀÏ °æ¿ì¿¡ tpfh.Version.Number°¡ Á¤»óÀûÀ¸·Î µé¾îÀÖÁö //¾Ê´Â °æ¿ì°¡ À־ ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ if (tpfh.Version.Texpia=='P' && tpfh.Version.Method=='T' && tpfh.Version.Number > TextileFileVersion) { ec = EC_FILE_NOT_OPEN_NEWERVERSION; goto fail; } // 090527 upper version //090804 by david ÆÄÀÏ ¹öÀü ȣȯÀ» À§ÇØ Ãß°¡ --------------------------- //tpfh.Version.Number >= 230 ÀÌ»ó ºÎÅÍ Layer°¡ Æ÷ÇԵǾî ÀÖÀ½. //090804ÀÌÀü¿¡´Â ¾Æ·¡ layer¸¦ Æ÷ÇÔÇÏÁö ¾Ê°í ÀúÀåÇØ¼­ ÆÐÅÏŽ»ö±â¿¡¼­ ÆÄÀÏÀÌ ¿­¸®Áö ¾Ê´Â //¹®Á¦°¡ ÀÖ¾ú´Ù. ¹öÀüÀ» °°ÀÌ ¾²±â ¶§¹®¿¡ ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­´Â ÆÄÀÏ ¹öÀü 300¿¡¼­ //±×ÀÌ»óÀ¸·Î ¿Ã·Á¾ß ÇÑ´Ù. //µðÀÚÀÎ½Ç ÃÖÁö¿¬ ´ë¸®¿Í À̾߱â ÇØ¼­ 301·Î ¿Ã¸®±â·Î °áÁ¤ 090805 //10.2¹öÀü ÀÌÈÄ¿¡ ÆÐÅÏŽ»ö±â·Î ÀúÀåÇÏÁö ¾ÊÀº TEXÆÄÀÏÀº µµ½ÄÈ­¿¡¼­ ¿­ ¼ö ¾ø´Ù. if (tpfh.Version.Number > 300) { if (!ReadFile(hFile, &layer, sizeof(bool), &dwRead, NULL)) goto fail; } //---------------------------------------------------------------------- //==============Vector Merge if (tpfh.Version.Number >= 240) { if (!ReadFile(hFile, &vector, sizeof(bool), &dwRead, NULL)) goto fail; if (vector) VecDraw->InitMerge(hFile, id->sBitmap->Width, mirror); // By GreenFish Vector File Merge } //============== CloseHandle(hFile); } MainImageForm->Palette->ToRGBQUAD(rgb, 256); id->sBitmap->PutColors(0, 256, rgb); if (mirror) { id->sBitmap->ReverseBitmap_8Bit(); } if (!(Image->SubBitmap->Create(id->sBitmap->Width, id->sBitmap->Height, 8, rgb))) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if (!(Image->SubMask->Create(id->sBitmap->Width, id->sBitmap->Height, 8, rgb))) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if (!(id->sBitmap->StartScanLine())) {ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail;} for (y = 0; y < id->sBitmap->Height; y++) { sl = id->sBitmap->GetScanLine(y); for (x = 0; x < id->sBitmap->Width; x++) { if(sl[x] < 2) { sl[x] = 255; } else { sl[x] = 0; } } id->sBitmap->PutScanLine(y); } id->sBitmap->StopScanLine(); Image->SubMask->Copy(id->sBitmap, SRCCOPY); MainImageForm->iMainImage->SubVisible = false; MainImageForm->Center.x = MainImageForm->iMainImage->SubBitmap->Width / 2; MainImageForm->Center.y = MainImageForm->iMainImage->SubBitmap->Height / 2; id->draw = false; Imgstore->Add(id); delete spalette; ImgIndex = Imgstore->Count-1; if(method == 1)SeparateImage(); else method = 1; END_LOG; return; fail: //if (hFile == INVALID_HANDLE_VALUE) CloseHandle(hFile); //INVALID_HANDLE_VALUEÀ̸é HandleÀÌ ¾ø´Â °ÍÀÌ´Ù. ÀÌ ¶§ CloseHandleÀ» ÇÒ Çʿ䰡 ¾ø´Ù. //µû¶ó¼­ handleÀÌ ÀÖÀ» ¶§ File HandleÀ» CloseÇØ¾ß¸¸ ÆÄÀÏÀ» ´Ù½Ã ÀÐÀ» ¼ö ÀÖ´Ù. //¿Ö ÀÌ·¸°Ô ÇßÀ»±î? ¤Ð¤Ð ¹Ùº¸´Ù.... //by david 090811 if (hFile) CloseHandle(hFile); if (spalette) delete spalette; if (id) { if (id->sBitmap) delete id->sBitmap; delete id; } EXCEPTION_MESSAGE_OK(ec); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::MergeBitmap() { BEGIN_LOG(""); TImgdata *id; POINT p; TPItemImage *Image = MainImageForm->iMainImage; RECT r; if (Imgstore->Count>0) { p.x = Image->SubRange.left; p.y = Image->SubRange.top; id = (TImgdata *) Imgstore->Items[ImgIndex]; Image->SubBitmap->CopyFromRect(Image->uBitmap, p.x, p.y, SRCCOPY); Image->SubBitmap->Copy(id->sBitmap, SRCAND); Image->SubVisible = true; r.left = paintrect.left < Image->SubRange.left ? paintrect.left : Image->SubRange.left; r.top = paintrect.top < Image->SubRange.top ? paintrect.top : Image->SubRange.top; r.right = paintrect.right > Image->SubRange.right ? paintrect.right : Image->SubRange.right; r.bottom = paintrect.bottom > Image->SubRange.bottom ? paintrect.bottom : Image->SubRange.bottom; paintrect = Image->SubRange; Image->RectPaint(r); } END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::SeparateImage() { BEGIN_LOG(""); ///* //BeConverted by linuxjun Don't Forget!! Undo_Method THistoryData *ud; TImgdata *id = NULL; TCursor cur = Screen->Cursor; Byte *sl, *dl, *ll; RGBQUAD rgb[256]; TPException ec; int i, x, y; TPItemImage *Image = MainImageForm->iMainImage; Screen->Cursor = crHourGlass; if ((ud = MainImageForm->Undo->GetLast())==NULL) { ec = EC_UNDO_NONE; goto fail; } Image->uBitmap->PartialUndo->LoadUndoWithOutIndexChange(); //converted by linuxjun if (Image->LayerMask) Image->LayerMask->PartialUndo->LoadUndoWithOutIndexChange(); for (i = 0; i < Imgstore->Count; i++) { if (ImgIndex != i) { id = (TImgdata *) Imgstore->Items[i]; if (id->draw) { if (!(Image->uBitmap->StartScanLine())) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if (Image->LayerMask) { if (!(Image->LayerMask->StartScanLine())) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if (!(id->sBitmap->StartScanLine())) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } for (y = 0; y < id->sBitmap->Height; y++) { dl = Image->uBitmap->GetScanLine(y + id->rect.top); ll = Image->LayerMask->GetScanLine(y + id->rect.top); sl = id->sBitmap->GetScanLine(y); if (MainImageForm->iMainImage->uBitmap->BitsPerPixel == 8) { for (x = 0; x < id->sBitmap->Width; x++) { if (sl[x] == 0) { int j; if(PaletteForm->StyleUseColor) j = PaletteForm->DIB256Palette->UseColor-1; else j = PaletteForm->DIB256Palette->UseColor; dl[x + id->rect.left] = j + 1; ll[x + id->rect.left] = 0; // Layer Mask } } }else { // Full Color dl += id->rect.left*3; for (x = 0; x < id->sBitmap->Width; x++, dl+=3) { if (sl[x] == 0) { *dl = clBlack;//TempC & 0xFF ; *(dl+1) = clBlack;//(TempC>>8) & 0xFF; *(dl+2) = clBlack;//(TempC>>16) & 0xFF; ll[(id->rect.left+x) >> 3] &= ~(0x80 >> ((id->rect.left+x) & 7)); // Layer Mask } } } Image->LayerMask->PutScanLine(y + id->rect.top); Image->uBitmap->PutScanLine(y + id->rect.top); } id->sBitmap->StopScanLine(); Image->LayerMask->StopScanLine(); } else { if (!(id->sBitmap->StartScanLine())) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } for (y = 0; y < id->sBitmap->Height; y++) { dl = Image->uBitmap->GetScanLine(y + id->rect.top); sl = id->sBitmap->GetScanLine(y); if (MainImageForm->iMainImage->uBitmap->BitsPerPixel == 8) { for (x = 0; x < id->sBitmap->Width; x++) { if (sl[x] == 0) { int j; if(PaletteForm->StyleUseColor) j = PaletteForm->DIB256Palette->UseColor-1; else j = PaletteForm->DIB256Palette->UseColor; dl[x + id->rect.left] = j + 1; } } }else { // Full Color dl += id->rect.left*3; for (x = 0; x < id->sBitmap->Width; x++, dl+=3) { if (sl[x] == 0) { *dl = clBlack;//TempC & 0xFF ; *(dl+1) = clBlack;//(TempC>>8) & 0xFF; *(dl+2) = clBlack;//(TempC>>16) & 0xFF; } } } Image->uBitmap->PutScanLine(y + id->rect.top); } id->sBitmap->StopScanLine(); } Image->uBitmap->StopScanLine(); } } } id = (TImgdata *) Imgstore->Items[ImgIndex]; MainImageForm->Palette->ToRGBQUAD(rgb, 256); if (!(Image->SubBitmap->Create(id->sBitmap->Width, id->sBitmap->Height, 8, rgb))) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if (!(Image->SubMask->Create(id->sBitmap->Width, id->sBitmap->Height, 8, rgb))) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } Image->SubMask->Copy(id->sBitmap, SRCCOPY); MainImageForm->Center.x = Image->SubBitmap->Width / 2; MainImageForm->Center.y = Image->SubBitmap->Height / 2; ::RepaintColor(); method = 1; Screen->Cursor = cur; END_LOG; return; fail: if (id && id->sBitmap) id->sBitmap->StopScanLine(); MainImageForm->iMainImage->uBitmap->StopScanLine(); EXCEPTION_MESSAGE_OK(ec); Screen->Cursor = cur; END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::DeleteImage() { BEGIN_LOG(""); ///* //BeConverted by linuxjun Don't Forget!! Undo_Method THistoryData *ud; TImgdata *id; Byte *sl, *dl, *ll; TCursor cur = Screen->Cursor; int i, x, y; TPException ec = EC_NONE; Screen->Cursor = crHourGlass; id = (TImgdata *) Imgstore->Items[ImgIndex]; Imgstore->Remove(id); delete id->sBitmap; delete id; if (ImgIndex == Imgstore->Count) ImgIndex = ImgIndex - 1; if (Imgstore->Count == 0) { rztbDelete->Enabled = false; fix = true; } if ((ud = MainImageForm->Undo->GetLast())==NULL) { ec = EC_UNDO_NONE; goto fail; } MainImageForm->iMainImage->uBitmap->PartialUndo->LoadUndoWithOutIndexChange(); //converted by linuxjun if (MainImageForm->iMainImage->LayerMask) MainImageForm->iMainImage->LayerMask->PartialUndo->LoadUndoWithOutIndexChange(); //by linuxjun for (i = 0; i < Imgstore->Count; i++) { id = (TImgdata *) Imgstore->Items[i]; if (id->draw) { if (!(MainImageForm->iMainImage->uBitmap->StartScanLine())) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if (MainImageForm->iMainImage->LayerMask) { if (!(MainImageForm->iMainImage->LayerMask->StartScanLine())) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if (!(id->sBitmap->StartScanLine())) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } for (y = 0; y < id->sBitmap->Height; y++) { dl = MainImageForm->iMainImage->uBitmap->GetScanLine(y + id->rect.top); ll = MainImageForm->iMainImage->LayerMask->GetScanLine(y + id->rect.top); sl = id->sBitmap->GetScanLine(y); if (MainImageForm->iMainImage->uBitmap->BitsPerPixel == 8) { for (x = 0; x < id->sBitmap->Width; x++) { if (sl[x] == 0) { dl[x + id->rect.left] = stycolor+1; ll[x + id->rect.left] = 0; } } }else { // Full Color dl += id->rect.left*3; for (x = 0; x < id->sBitmap->Width; x++, dl+=3) { if (sl[x] == 0) { *dl = clBlack;//TempC & 0xFF ; *(dl+1) = clBlack;//(TempC>>8) & 0xFF; *(dl+2) = clBlack;//(TempC>>16) & 0xFF; ll[(id->rect.left+x) >> 3] &= ~(0x80 >> ((id->rect.left+x) & 7)); // Layer Mask } } } MainImageForm->iMainImage->LayerMask->PutScanLine(y + id->rect.top); MainImageForm->iMainImage->uBitmap->PutScanLine(y + id->rect.top); } id->sBitmap->StopScanLine(); MainImageForm->iMainImage->LayerMask->StopScanLine(); } else { if (!(id->sBitmap->StartScanLine())) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } for (y = 0; y < id->sBitmap->Height; y++) { dl = MainImageForm->iMainImage->uBitmap->GetScanLine(y + id->rect.top); sl = id->sBitmap->GetScanLine(y); if (MainImageForm->iMainImage->uBitmap->BitsPerPixel == 8) { for (x = 0; x < id->sBitmap->Width; x++) { if (sl[x] == 0) { dl[x + id->rect.left] = stycolor+1; } } } else { // Full Color dl += id->rect.left*3; for (x = 0; x < id->sBitmap->Width; x++, dl+=3) { if (sl[x] == 0) { *dl = clBlack;//TempC & 0xFF ; *(dl+1) = clBlack;//(TempC>>8) & 0xFF; *(dl+2) = clBlack;//(TempC>>16) & 0xFF; } } } MainImageForm->iMainImage->uBitmap->PutScanLine(y + id->rect.top); } id->sBitmap->StopScanLine(); } MainImageForm->iMainImage->uBitmap->StopScanLine(); } } ::RepaintColor(); rztbDeleteStyle->Down = false; method = 2; Screen->Cursor = cur; END_LOG; return; fail: Screen->Cursor = cur; if (id->sBitmap) id->sBitmap->StopScanLine(); if (MainImageForm->iMainImage->LayerMask) MainImageForm->iMainImage->LayerMask->StopScanLine(); MainImageForm->iMainImage->uBitmap->StopScanLine(); EXCEPTION_MESSAGE_OK(ec); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::ReadIniFile() { BEGIN_LOG(""); TIniFile *StyleIni = NULL; int l, t; StyleIni = new TIniFile(AppDataItem + "\\Style.ini"); if (StyleIni) { l = StyleIni->ReadInteger("Form", "Left", (Screen->Width-Width)>>1); t = StyleIni->ReadInteger("Form", "Top", (Screen->Height-Height)>>1); currentIndex = StyleIni->ReadInteger("Image", "Order", 0); if (currentIndex < 0) currentIndex = 0; if (currentIndex>0) { if (currentIndex >= Data->Count) currentIndex = Data->Count - 1; } delete StyleIni; } if (l < 0) this->Left = 0; else this->Left = l; if (t < 0) this->Top = 0; else this->Top = t; END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::WriteIniFile() { BEGIN_LOG(""); TIniFile *StyleIni = NULL; StyleIni = new TIniFile(AppDataItem + "\\Style.ini"); if (StyleIni) { StyleIni->WriteInteger("Form", "Left", this->Left); StyleIni->WriteInteger("Form", "Top", this->Top); if (currentIndex < 0) currentIndex = 0; StyleIni->WriteInteger("Image", "Order", currentIndex); delete StyleIni; } END_LOG; } //--------------------------------------------------------------------------- ////// Public Method ////////////////////////////////////////////////// //--------------------------------------------------------------------------- void __fastcall TStyleForm::InitForm() { BEGIN_LOG(""); int i, j; SearchFile = new TSearchFile; SearchFile->FileName = String("*.tex"); SearchFile->FileNameList->Add(String(".tex")); //090804 by david SearchFile->FileNameList->Add(String(".vst")); #ifdef TRIAL SearchFile->TrialFileName = String("*.ttex"); SearchFile->FileNameList->Add(String(".ttex")); //090804 by david #endif if (isVector) { SearchFile->InitDirectory = String(DirectoryVStyle); // Vector StyleÀÎ °æ¿ì °æ·Î º¯°æ }else { SearchFile->InitDirectory = String(DirectoryStyle); } SearchFile->Make = true; SearchFile->SubDirectory = true; Data = new TList; UpdateData(); ReadIniFile(); ChangeStyleData(); StringGrid->Align = alClient; StringGrid->ColCount = 20; StringGrid->RowCount = 30; StringGrid->ColWidths[0] = 30; StringGrid->RowHeights[0] = 24; for (i = 1; i < 20; i++) StringGrid->ColWidths[i] = 90; for (j = 1; j < 30; j++) StringGrid->RowHeights[j] = 135; /* if(PaletteForm->StyleUseColor) if(PaletteForm->DIB256Palette->UseColor == 2)stycolor = PaletteForm->DIB256Palette->UseColor-1; else stycolor = PaletteForm->DIB256Palette->UseColor; else stycolor = PaletteForm->DIB256Palette->UseColor; */ if(PaletteForm->StyleUseColor && PaletteForm->DIB256Palette->UseColor == 2){ stycolor = PaletteForm->DIB256Palette->UseColor-1; } else { RGBQUAD rgb = PaletteForm->DIB256Palette->Palette->ColorData[PaletteForm->DIB256Palette->UseColor]->RGB; if (rgb.rgbRed == 0 && rgb.rgbGreen == 0 && rgb.rgbBlue == 0){ stycolor = PaletteForm->DIB256Palette->UseColor - 1; } else { stycolor = PaletteForm->DIB256Palette->UseColor; } } PaletteForm->DIB256Palette->SetNormal(stycolor+1,0, 0, 0); ::RepaintColor(); MainImageForm->iMainImage->SubEnabled = true; Imgstore = new TList; method = 0; CSearchCount = 0; RSearchCount = 0; del = false; fix = true; styleOUT = false; if(!isVector)MainImageForm->UndoSave(UK_ALL, Rect(0,0,0,0)); //by linuxjun For New Undo Visible = true; BringToFront(); if(MainImageForm->iMainImage->uBitmap->BitsPerPixel == 8 && stycolor>250){ EXCEPTION_MESSAGE_OK(EC_COLOR_OVERFLOW); styleOUT = true; } END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::ExitForm() { BEGIN_LOG(""); int i, j; TFileInfor *fi; TDirectoryInfor *firdi, *secdi; TImgdata *id; WriteIniFile(); if (Data) { if (Data->Count>0) { firdi = (TDirectoryInfor *) Data->Items[currentIndex]; if (firdi->pDirectoryList) { for (i=0; ipDirectoryList->Count; i++) { secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[i]; if (secdi->pFileList) { for (j=0; jpFileList->Count; j++) { fi = (TFileInfor *) secdi->pFileList->Items[j]; if(fi->tBitmap) { delete fi->tBitmap; fi->tBitmap = NULL; } } } } } } while(Data->Count>0) { firdi = (TDirectoryInfor *) Data->Last(); Data->Remove(firdi); } delete Data; } if (SearchFile) delete SearchFile; if (Imgstore) { while (Imgstore->Count>0) { id = (TImgdata *) Imgstore->Last(); Imgstore->Remove(id); delete id->sBitmap; delete id; } delete Imgstore; } MainImageForm->iMainImage->SubVisible = false; MainImageForm->iMainImage->SubEnabled = false; //Bitmap <=> Vector·Î Àüȯ½Ã Canvas°¡ º¸¿´´Ù »ç¶óÁö°Ô µÇ´Â °ÍÀ» ¸·±â À§ÇØ ÁÖ¼®Ã³¸® // Visible = false; if(stycnt)MainImageForm->Palette->UseColor = stycolor+1; //090806 by david º¤Å͸¦ ÁöÁ¤ÇÏÁö ¾ÊÀº »óÅ¿¡¼­ Á¾·áµÉ ¶§ //º¤ÅͰ¡ Áö¿öÁöµµ·Ï Ãß°¡ if (VecDraw->NVector->bMergeMode) VecDraw->ExitMerge(); ChangeButtonState(this); Data = NULL; SearchFile = NULL; Imgstore = NULL; END_LOG; } //--------------------------------------------------------------------------- bool __fastcall TStyleForm::PopupInsert() { if ((method == 2) && (Imgstore->Count>0)) return true; else return false; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::PopupClick(TObject *Sender) { BEGIN_LOG(""); if (del) DeleteImage(); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::iMainImageMouseMove(int X, int Y) { if (method == 1) { MainImageForm->SubBitmapPosition(X, Y, true); MergeBitmap(); } } //--------------------------------------------------------------------------- void __fastcall TStyleForm::iMainImageMouseDown(TMouseButton Button, int X, int Y) { BEGIN_LOG(""); TImgdata *id; int min[2] = {999, 999999999}; int tempsquare; // min[0] ImgIndex; min[1] RectSquare; del = false; if (Imgstore->Count>0) { if (method == 1) { DrawToImage(X , Y); if (isVector) { //090804 by david //º¤ÅÍ´Â MouseDownÀ¸·Î °íÁ¤½ÃŲ ÈÄ Merge¸ðµå¸¦ ÇØÁ¦ÇÑ´Ù. //À̵¿Àº º¤ÅÍ ¸Þ´º¿¡¼­ °¡´ÉÇÏ´Ù. /* //µðÀÚÀνǿ¡¼­ ¼±ÅÃµÈ »óÅ À¯Áö¸¦ ¿øÇؼ­ ÁÖ¼® ó¸® 090806 ÃÖÁö¿¬´ë¸® if (VecDraw->NVector->bMergeMode) VecDraw->ExitMerge(); else { VecDraw->deSelect(); VecDraw->NVector->bMergeMode = false; } */ method = 0; } } else if (method == 2) { for (int i = 0; i < Imgstore->Count; i++) { id = (TImgdata *) Imgstore->Items[i]; if (PtInRect(&id->rect, Point(X, Y))) { tempsquare = ((id->rect.right - id->rect.left) * (id->rect.bottom - id->rect.top)); if (min[1]>tempsquare) { min[1] = tempsquare; min[0] = i; } } } if (min[0] != 999) { del = true; ImgIndex = min[0]; if (Button == mbLeft) { if (rztbDeleteStyle->Down) DeleteImage(); else SeparateImage(); } } } } END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::DrawToImage(int X, int Y) { BEGIN_LOG(""); ////////////////////new variable//////////// bool isFirstX; int StartX,EndX; //////////////////////////////////////////// ///* //BeConverted by linuxjun Don't Forget!! Undo_Method int w, h, x, y; THistoryData *ud; TImgdata *id; POINT p; Byte *sl, *dl, *ll; TPItemImage *Image = MainImageForm->iMainImage; stycnt = false; TPException ec = EC_NONE; MainImageForm->SubBitmapPosition(X, Y, false); p.x = Image->SubRange.left; p.y = Image->SubRange.top; id = (TImgdata *) Imgstore->Items[ImgIndex]; w = Image->SubBitmap->Width; h = Image->SubBitmap->Height; if (!(Image->uBitmap->StartScanLine())) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if (!(Image->SubBitmap->StartScanLine())) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if (!(id->sBitmap->StartScanLine())) { ec = EC_MEMORY_LACK; SAVE_EXCEPTION(ec); goto fail; } if (Image->uBitmap->BitsPerPixel == 8) { for (y = 0; y < h; y++) { dl = Image->uBitmap->GetScanLine(y + p.y); sl = Image->SubBitmap->GetScanLine(y); isFirstX=true; //for new Undo_Method by linuxjun StartX=EndX=0; //by linuxjun for (x = 0; x < w; x++) { ////////////////////////////// EndX=x+p.x; // if (isFirstX) // { // StartX=x+p.x; // isFirstX=false; // } // if (sl[x] == 0) { if(stycolor>250){ EXCEPTION_MESSAGE_OK(EC_COLOR_OVERFLOW); Image->SubBitmap->StopScanLine(); Image->uBitmap->StopScanLine(); id->sBitmap->StopScanLine(); END_LOG; return; } stycnt = true; dl[x+p.x] = stycolor+1; } else { dl[x+p.x] = sl[x]; // ////////////////////////////// } } if(!isFirstX)Image->uBitmap->PutScanLine(y + p.y,StartX,EndX-StartX+1); //by linuxjun } } else { // Full Color ¿¡¼­µµ ½ÇÇà °¡´ÉÇÏ°Ô By GreenFish for (y = 0; y < h; y++) { dl = Image->uBitmap->GetScanLine(y + p.y); sl = id->sBitmap->GetScanLine(y); dl += p.x * 3; isFirstX=true; //for new Undo_Method by linuxjun StartX=EndX=0; //by linuxjun for (x = 0; x < w; x++, dl+=3 ) { if (sl[x] == 0) { *dl = clBlack; *(dl+1) = clBlack; *(dl+2) = clBlack; //BeConverted by linuxjun Don't Forget!! Undo_Method ////////////////////////////// EndX=x+p.x; // if (isFirstX) // { // StartX=x+p.x; // isFirstX=false; // } // ////////////////////////////// } } if(!isFirstX)Image->uBitmap->PutScanLine(y + p.y,StartX,EndX-StartX+1); //by linuxjun } } id->sBitmap->StopScanLine(); Image->SubBitmap->StopScanLine(); Image->uBitmap->StopScanLine(); if (Image->LayerMask) Image->LayerMask->CopyToRect(p.x, p.y, Image->SubMask, SRCAND); Image->SubBitmap->Destroy(); Image->SubMask->Destroy(); Image->SubVisible = false; ::RepaintColor(); id->rect = Rect(p.x, p.y, p.x + w, p.y + h); id->draw = true; rztbDeleteStyle->Enabled = true; method = 2; fix = false; END_LOG; return; fail: Image->SubBitmap->StopScanLine(); Image->uBitmap->StopScanLine(); Image->SubBitmap->Destroy(); Image->SubMask->Destroy(); id->sBitmap->StopScanLine(); Image->LayerMask->StopScanLine(); EXCEPTION_MESSAGE_OK(ec); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::BlackAndWhite() { BEGIN_LOG(""); Byte *mp, mm, *bp, *lp; int x, y; BWBreak = false; if (!MainImageForm->WorkArea->Mask->StartScanLine()) goto fail; if (!MainImageForm->iMainImage->uBitmap->StartScanLine()) goto fail; if (MainImageForm->iMainImage->LayerMask) { if (!MainImageForm->iMainImage->LayerMask->StartScanLine()) goto fail; if (MainImageForm->iMainImage->uBitmap->BitsPerPixel==8) { for (y=MainImageForm->WorkArea->Range.top; yWorkArea->Range.bottom; y++) { bp = MainImageForm->iMainImage->uBitmap->GetScanLine(y); lp = MainImageForm->iMainImage->LayerMask->GetScanLine(y); mp = MainImageForm->WorkArea->Mask->GetScanLine(y-MainImageForm->WorkArea->Range.top); for (x=MainImageForm->WorkArea->Range.left; xWorkArea->Range.right; x++, mp++) { if (*mp && (lp[x] == 0)) { if(!(*(bp+x) == 0x01 || *(bp+x) == 0x02)){ ShowMessage(IDS_ONLYCOLORSAVE); BWBreak = true; MainImageForm->iMainImage->LayerMask->StopScanLine(); MainImageForm->iMainImage->uBitmap->StopScanLine(); MainImageForm->WorkArea->Mask->StopScanLine(); END_LOG; return; } } } } } MainImageForm->iMainImage->LayerMask->StopScanLine(); } else { if (MainImageForm->iMainImage->uBitmap->BitsPerPixel==8) { for (y=MainImageForm->WorkArea->Range.top; yWorkArea->Range.bottom; y++) { bp = MainImageForm->iMainImage->uBitmap->GetScanLine(y); mp = MainImageForm->WorkArea->Mask->GetScanLine(y-MainImageForm->WorkArea->Range.top); for (x=MainImageForm->WorkArea->Range.left; xWorkArea->Range.right; x++, mp++) { if (*mp) { if(!(*(bp+x) == 0x01 || *(bp+x) == 0x02)){ ShowMessage(IDS_ONLYCOLORSAVE); BWBreak = true; MainImageForm->iMainImage->uBitmap->StopScanLine(); MainImageForm->WorkArea->Mask->StopScanLine(); END_LOG; return; } } } } } } MainImageForm->iMainImage->uBitmap->StopScanLine(); MainImageForm->WorkArea->Mask->StopScanLine(); END_LOG; return; fail: if (MainImageForm->iMainImage->LayerMask) MainImageForm->iMainImage->LayerMask->StopScanLine(); MainImageForm->iMainImage->uBitmap->StopScanLine(); MainImageForm->WorkArea->Mask->StopScanLine(); END_LOG; return; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::StringGridKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { BEGIN_LOG(""); int FNLength, s, len; String fn, Sn, Sfn; String LowName, names; String temp; TDirectoryInfor *firdi, *secdi; TFileInfor *fi; if(Key == VK_F3){ // F3 firdi = (TDirectoryInfor *) Data->Items[currentIndex]; FNLength = name.Length(); LowName = LowerCase(name); if(LowName.Pos(String(".tex")) == FNLength - 3)Sfn = name; else Sfn = name + String(".tex"); for(int i = CSearchCount; i < firdi->pDirectoryList->Count; i++){ secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[CSearchCount]; if (secdi->pFileList == NULL) continue; for (int j = RSearchCount; j < secdi->pFileList->Count; j++) { fi = (TFileInfor*) secdi->pFileList->Items[j]; fn = LowerCase(fi->Name); Sn = LowerCase(Sfn); if(AllSearch->Checked){ len = fn.Length(); //len = (fn.Length() - 4); for (int i = 1; i <= len; i++) { names += String(fn[i]); } s = names.Pos(LowerCase(name)); fn = String(""); if(s){ StringGrid->Row = j+1; StringGrid->Col = CSearchCount+1; StringGrid->SetFocus(); RSearchCount = j; CurrentFileNum++; goto next; } } else if(fn == Sn){ StringGrid->Row = j+1; StringGrid->Col = CSearchCount+1; StringGrid->SetFocus(); CurrentFileNum++; goto next; } } CSearchCount++; RSearchCount = 0; } ShowMessage(IDS_MESSAGE_OVERFILENOTFOUND); next: if(AllSearch->Checked){ RSearchCount++; temp = CurrentFileNum; temp +="/"; temp +=NumOfSearchFiles; StatusBar1->SimpleText=temp; } else { CSearchCount++; temp = CurrentFileNum; temp +="/"; temp +=NumOfSearchFiles; StatusBar1->SimpleText=temp; } } END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::rzbitbtnBitmapClick(TObject *Sender) { BEGIN_LOG(""); TRzBitBtn *bitBtn = (TRzBitBtn *)Sender; //====================== Vector Style·Î ÀüȯÇÑ´Ù if (bitBtn == rzbitbtnBitmap) { isVector = false; VecDraw->bVectorStyle = false; if (rbStyle->Checked && MainImageForm->iMainImage->uBitmap->BitsPerPixel == 24) { //090721 by david rztbOverwrite->Enabled = false; rztbInsert->Enabled = false; } } else { isVector = true; VecDraw->bVectorStyle = true; if (rbStyle->Checked) { rztbOverwrite->Enabled = true; rztbInsert->Enabled = true; } } ExitForm(); InitForm(); UpdateData(); DeleteOldData(currentIndex); ChangeStyleData(); StringGrid->Repaint(); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::rztbExitClick(TObject *Sender) { BEGIN_LOG(""); PostMessage(hWnd, TPM_EXITFUNCTION, 0, 0); Close(); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::sbSearchClick(TObject *Sender) { BEGIN_LOG(""); int FNLength, s; String fn, Sn, Sfn; String LowName; TDirectoryInfor *firdi, *secdi; TFileInfor *fi; String temp; CSearchCount = 0; firdi = (TDirectoryInfor *) Data->Items[currentIndex]; name = edSearch->Text; FNLength = name.Length(); LowName = LowerCase(name); if(LowName.Pos(String(".tex")) == FNLength - 3)Sfn = name; else Sfn = name + String(".tex"); NumOfSearchFiles=0; CurrentFileNum=0; if (!firdi->pDirectoryList) { ShowMessage(IDS_MESSAGE_FILENOTFOUND); END_LOG; return; } //////////////////////////// for(int i = 0; i < firdi->pDirectoryList->Count; i++){ secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[CSearchCount]; if (secdi->pFileList == NULL) continue; for (int j = 0; j < secdi->pFileList->Count; j++) { fi = (TFileInfor*) secdi->pFileList->Items[j]; fn = LowerCase(fi->Name); Sn = LowerCase(Sfn); if(AllSearch->Checked){ s = fn.Pos(LowerCase(name)); if(s){ NumOfSearchFiles++; CurrentFileNum = 1; } } else if(fn == Sn){ NumOfSearchFiles++; CurrentFileNum = 1; } } CSearchCount++; } temp = CurrentFileNum; temp +="/"; temp +=NumOfSearchFiles; StatusBar1->SimpleText=temp; //////////////////////////// CSearchCount = 0; for(int i = 0; i < firdi->pDirectoryList->Count; i++){ secdi = (TDirectoryInfor *) firdi->pDirectoryList->Items[CSearchCount]; if (secdi->pFileList == NULL) continue; for (int j = 0; j < secdi->pFileList->Count; j++) { fi = (TFileInfor*) secdi->pFileList->Items[j]; fn = LowerCase(fi->Name); Sn = LowerCase(Sfn); if(AllSearch->Checked){ s = fn.Pos(LowerCase(name)); if(s){ StringGrid->Row = j+1; StringGrid->Col = CSearchCount+1; StringGrid->SetFocus(); RSearchCount = j; goto next; } } else if(fn == Sn){ StringGrid->Row = j+1; StringGrid->Col = CSearchCount+1; StringGrid->SetFocus(); goto next; } } CSearchCount++; } ShowMessage(IDS_MESSAGE_FILENOTFOUND); next: if(AllSearch->Checked){ RSearchCount++; } else CSearchCount++; END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::rztbOverwriteClick(TObject *Sender) { BEGIN_LOG(""); ChangeButtonState(Sender); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::rzcbMenuTypeCloseUp(TObject *Sender) { if (rbStyle->Checked) { if (MainImageForm->WorkArea->Mask && MainImageForm->iMainImage->uBitmap->BitsPerPixel==8) { rztbOverwrite->Enabled = true; rztbInsert->Enabled = true; rztbOverwrite->GroupIndex = 2; } else if (MainImageForm->WorkArea->Mask && MainImageForm->iMainImage->uBitmap->BitsPerPixel == 24 && isVector) { rztbOverwrite->Enabled = true; //090721 by david rztbInsert->Enabled = true; rztbOverwrite->GroupIndex = 2; } else { rztbOverwrite->Enabled = false; rztbInsert->Enabled = false; rztbOverwrite->GroupIndex = 0; } } else { rztbInsert->Enabled = false; if (rbStyleBar->Checked) rztbDelete->GroupIndex = 0; else rztbDelete->GroupIndex = 1; //if (rzcbMenuType->ItemIndex == 3 && method != 2) rztbDelete->Enabled = false; //else rztbDelete->Enabled = true; } } //--------------------------------------------------------------------------- void __fastcall TStyleForm::rztbDeleteClick(TObject *Sender) { BEGIN_LOG(""); ChangeButtonState(Sender); if (rbHorz->Checked || rbStyle->Checked) { END_LOG; return; } TDirectoryInfor *di; if (Data->Count > 0) { di = (TDirectoryInfor *) Data->Items[currentIndex]; if (MessageDlg(IDS_MESSAGE_DELETEFILE, mtWarning, TMsgDlgButtons()<InitDirectory + String("\\") + di->Name); else { END_LOG; return; } ComboBox->Items->Delete(currentIndex); DeleteOldData(currentIndex); UpdateData(); if(currentIndex == Data->Count) currentIndex = currentIndex-1; ChangeStyleData(); StringGrid->Repaint(); } END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::rztbFixStyleClick(TObject *Sender) { BEGIN_LOG(""); TImgdata *id; while (Imgstore->Count>0) { id = (TImgdata *) Imgstore->Last(); Imgstore->Remove(id); delete id->sBitmap; delete id; } if(!isVector)MainImageForm->UndoSave(UK_ALL, Rect(0,0,0,0)); //by linuxjun method = 0; fix = true; rztbDeleteStyle->Enabled = false; ::RepaintColor(); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::rbStyleBarClick(TObject *Sender) { rbHorz->Checked = false; rbStyle->Checked = false; rztbInsert->Enabled = true; rztbDelete->Enabled = true; rztbDelete->GroupIndex = 0; rztbOverwrite->Enabled = false; //rztbFixStyle->Enabled = false; rztbDeleteStyle->Enabled = false; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::rbHorzClick(TObject *Sender) { rbStyleBar->Checked = false; rbStyle->Checked = false; rztbInsert->Enabled = true; rztbDelete->Enabled = true; rztbDelete->GroupIndex = 4; rztbOverwrite->Enabled = false; //rztbFixStyle->Enabled = false; rztbDeleteStyle->Enabled = false; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::rbStyleClick(TObject *Sender) { rbStyleBar->Checked = false; rbHorz->Checked = false; rztbDelete->Enabled = true; rztbDelete->GroupIndex = 4; if (MainImageForm->WorkArea->Mask) { rztbInsert->Enabled = true; rztbOverwrite->Enabled = true; } else { rztbInsert->Enabled = false; rztbOverwrite->Enabled = false; } //rztbFixStyle->Enabled = true; if (Imgstore && Imgstore->Count > 0) rztbDeleteStyle->Enabled = true; else rztbDeleteStyle->Enabled = false; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::ChangeButtonState(TObject *Sender) { BEGIN_LOG(""); TRzToolButton *s = (TRzToolButton *) Sender; if (s != rztbInsert) if(rztbInsert->Down) rztbInsert->Down = false; if (s != rztbDelete) if(rztbDelete->Down) rztbDelete->Down = false; if (s != rztbOverwrite) if(rztbOverwrite->Down) rztbOverwrite->Down = false; if (s != rztbDeleteStyle) if(rztbDeleteStyle->Down) rztbDeleteStyle->Down = false; END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::rztbInsertClick(TObject *Sender) { BEGIN_LOG(""); ChangeButtonState(Sender); if (rbStyle->Checked) { END_LOG; return; } WideString fn, dn; TDirectoryInfor *di; TDialogForm *inputForm = new TDialogForm(this); inputForm->SetInputForm("Input Box", "Name"); if(inputForm->ShowModal() == mrOk) { fn = inputForm->InputEdit->Text; if (fn.Length()==0) { //added by maxleo21c(05.07.14) rztbInsert->Down = false; END_LOG; return; } if (rbStyleBar->Checked) {//MainIns dn = SearchFile->InitDirectory + WideString("\\") + fn; //change dir.... CreateDirectoryW(dn.c_bstr(), NULL); DeleteOldData(currentIndex); UpdateData(); currentIndex = GetCurrentIndex(fn); ChangeStyleData(); rztbInsert->Down = false; } else if (rbHorz->Checked) {//HorIns di = (TDirectoryInfor *) Data->Items[currentIndex]; //updatedata... dn = SearchFile->InitDirectory + WideString("\\") + di->Name + WideString("\\") + fn; CreateDirectoryW(dn.c_bstr(), NULL); DeleteOldData(currentIndex); UpdateData(); ChangeStyleData(); rztbInsert->Down = false; } } else { //added by maxleo21c(05.07.14) rztbInsert->Down = false; END_LOG; return; } if(inputForm) delete inputForm; StringGrid->SetFocus(); StringGrid->Repaint(); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::rztbDeleteStyleClick(TObject *Sender) { BEGIN_LOG(""); ChangeButtonState(Sender); END_LOG; } //--------------------------------------------------------------------------- void __fastcall TStyleForm::edSearchClick(TObject *Sender) { edSearch->SetFocus(); } //--------------------------------------------------------------------------- void __fastcall TStyleForm::edSearchKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if (Key == VK_RETURN) sbSearchClick(this); } //---------------------------------------------------------------------------