//--------------------------------------------------------------------------- #include #pragma hdrstop #include "APMenu_F.h" #include "Main.h" #include "MainImage.h" #include "APTable_F.h" #include "Palette.h" #include "Grouping_F.h" #include "StatusProgress.h" #include "MainMenu.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "RXSpin" #pragma link "TPSpin" #pragma resource "*.dfm" //--------------------------------------------------------------------------- #define IDS_REARRANGE StringTable[0] #define IDS_REPROPORTION StringTable[1] #define IDS_CONCENTRATION StringTable[2] #define IDS_DELETEALL StringTable[3] TAPMenuForm *APMenuForm; //--------------------------------------------------------------------------- __fastcall TAPMenuForm::TAPMenuForm(TComponent* Owner) : TForm(Owner) { //============================================ StringTable.Create(DirectoryItem, Language, "APMenu"); SetSmallFont(Font); sbRearrange->Caption = IDS_REARRANGE; lbRepro->Caption = IDS_REPROPORTION; lbConcen->Caption = IDS_CONCENTRATION; sbAll->Caption = IDS_DELETEALL; sbDelete->Caption = IDS_COMMON_DELETE; sbRun->Caption = IDS_COMMON_RUN; sbView->Caption = IDS_COMMON_FILE; //============================================ } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::InitForm() { int ParentHeight; TRect rt; TPItemImage *Image = MainImageForm->iMainImage; rt.Left = 0; rt.Top = 0; rt.Right = fileimg->Width; rt.Bottom = fileimg->Height; fileimg->Canvas->FillRect( rt); if (Image->uBitmap->BitsPerPixel == 8) { ParentHeight = Parent->Height+20; ClientHeight = 40; Parent->Height = ParentHeight+ClientHeight; sbRearrange->Enabled = true; } else { ParentHeight = Parent->Height+20; ClientHeight = 233; sbRearrange->Enabled = false; } Parent->Height = ParentHeight+ClientHeight; APTableForm = new TAPTableForm(MainForm); APTableForm->InitForm(); APTableForm->Parent = MainForm; APTableForm->Visible = false; store = new TList; ReadIniFile(); } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::ExitForm() { WriteIniFile(); if (APTableForm) delete APTableForm; if(Bitmap) delete Bitmap; TFileInfor *pinfo; if (store){ while(store->Count > 0){ pinfo = (TFileInfor*)(store->Last()); store->Remove(pinfo); delete pinfo; } delete store; } ::RepaintColor(); } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::sbViewClick(TObject *Sender) { APTableForm->Show(); } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::ScrollBar1Change(TObject *Sender) { if(store->Count >0){ TFileInfor *fi; fi = (TFileInfor *) store->Items[ScrollBar1->Position]; lblfilename->Caption = ExtractFileName(((TFileInfor*)(store->Items[ScrollBar1->Position]))->Name) ; fileimg->Canvas->Draw(0,0, fi->Bitmap); sbRun->Enabled = true; } } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::t(TObject *Sender) { TFileInfor *fi; TRect rt; rt.Left = 0; rt.Top = 0; rt.Right = fileimg->Width; rt.Bottom = fileimg->Height; if (store) { while (store->Count>0) { fi = (TFileInfor *)store->Last(); store->Remove(fi); delete fi; } } ScrollBar1->Max = 0; ScrollBar1->Position = 0; lblfilename->Caption = ""; fileimg->Canvas->FillRect( rt); } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::sbDeleteClick(TObject *Sender) { TFileInfor *fi; if (store->Count>0) { fi = (TFileInfor *) store->Items[ScrollBar1->Position]; // Áö¿ï ºñÆ®¸ÊÀ» ãÀ½ store->Remove(fi); delete fi; if(ScrollBar1->Max == 0){ // ºñÆ®¸ÊÀÌ 1°³ ¶Ç´Â ¾øÀ»°æ¿ì ScrollBar1->Position = 0; // º°µµ ó¸® ScrollBar1->Max = 0; } else { if(ScrollBar1->Position == ScrollBar1->Max) ScrollBar1->Position--; // ºñÆ®¸ÊÀÌ 2°³ÀÌ»ó ScrollBar1->Max--; // ÀÖÀ» °æ¿ì } if (store->Count>0) { // ºñÆ®¸ÊÀÌ 1°³ÀÏ °æ¿ì fi = (TFileInfor *) store->Items[ScrollBar1->Position]; fileimg->Canvas->Draw(0,0, fi->Bitmap); } else { TRect rt; // ºñÆ®¸ÊÀÌ ¾øÀ» °æ¿ì ó¸® rt.Left = 0; rt.Top = 0; rt.Right = fileimg->Width; rt.Bottom = fileimg->Height; fileimg->Canvas->FillRect( rt); lblfilename->Caption = ""; } } } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::InsertImage(AnsiString fn) { TFileInfor *fi; HANDLE hFile = INVALID_HANDLE_VALUE; int ec; TTexVersion ver; fi = new TFileInfor; fi->Name = fn; fi->Bitmap = new Graphics::TBitmap; if ((hFile = CreateFile(fi->Name.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) goto next; if (!LoadFromTexpiaTag(hFile, fi, &ver)) goto next; // fi->Bitmap ¿¡ ÆÄÀÏ ·Îµå CloseHandle(hFile); store->Add(fi); // store ¸®½ºÆ®¿¡ ÆÄÀÏÀ̸§,Bitmap Ãß°¡ if (store->Count <= 1) { ScrollBar1->Max = 0; // óÀ½ Ãß°¡½Ã ó¸® fileimg->Canvas->Draw(0,0, fi->Bitmap); lblfilename->Caption = ExtractFileName(fi->Name); } else { ScrollBar1->Max = store->Count -1; // µÎ¹øÂ° ºÎÅÍ Ã³¸® } // scrollbar ÀÇ Ã¼ÀÎÁö À̺¥Æ® È£Ãâ ScrollBar1->Position = ScrollBar1->Max; return; next: if (hFile!=INVALID_HANDLE_VALUE) CloseHandle(hFile); if(fi) delete fi; } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::sbRearrangeClick(TObject *Sender) { int i,j,PCount; BYTE r,g,b; THLS APTemp,*APSColor; int PaletteIndex[51]; RECT rect; double Interval; BYTE *bp,*tempbp; RGBQUAD temp,*sColor; TPException ec = EC_NONE; TTexpiaBitmap *tb; RGBQUAD rgb[256]; TCursor OldCursor; PCount = MainImageForm->Palette->UseColor; if(PCount > 52){ ShowMessage(IDS_MESSAGE_LESSTHENCOLOR); return; } OldCursor = Screen->Cursor; Screen->Cursor = crHourGlass; ::RunRearrange(); PCount = MainImageForm->Palette->UseColor; Interval = 50.0 / (PCount -1); APSColor = new THLS[PCount]; sColor = new RGBQUAD[PCount]; for(i = 2; i < PCount +2; i++) { r = PaletteForm->DIB256Palette->Palette->ColorData[i]->RGB.rgbRed; g = PaletteForm->DIB256Palette->Palette->ColorData[i]->RGB.rgbGreen; b = PaletteForm->DIB256Palette->Palette->ColorData[i]->RGB.rgbBlue; RGB2HLS(r,g,b,APSColor[i-2].Hue,APSColor[i-2].Lig,APSColor[i-2].Sat); } for(i = 0 ; i < PCount ; i++){ sColor[i].rgbRed = PaletteForm->DIB256Palette->Palette->ColorData[i+2]->RGB.rgbRed; sColor[i].rgbGreen = PaletteForm->DIB256Palette->Palette->ColorData[i+2]->RGB.rgbGreen; sColor[i].rgbBlue = PaletteForm->DIB256Palette->Palette->ColorData[i+2]->RGB.rgbBlue; } // ¸íµµ¿¡ µû¶ó Palette ¸¦ Á¤·Ä for(i = 0 ; i < PCount -1; i++) { for(j = i+1; j < PCount; j++) { if(APSColor[i].Lig > APSColor[j].Lig){ APTemp.Lig = APSColor[i].Lig; APSColor[i].Lig = APSColor[j].Lig; APSColor[j].Lig = APTemp.Lig; temp.rgbRed = PaletteForm->DIB256Palette->Palette->ColorData[i+2]->RGB.rgbRed; temp.rgbGreen = PaletteForm->DIB256Palette->Palette->ColorData[i+2]->RGB.rgbGreen; temp.rgbBlue = PaletteForm->DIB256Palette->Palette->ColorData[i+2]->RGB.rgbBlue; PaletteForm->DIB256Palette->Palette->ColorData[i+2]->RGB.rgbRed = PaletteForm->DIB256Palette->Palette->ColorData[j+2]->RGB.rgbRed; PaletteForm->DIB256Palette->Palette->ColorData[i+2]->RGB.rgbGreen = PaletteForm->DIB256Palette->Palette->ColorData[j+2]->RGB.rgbGreen; PaletteForm->DIB256Palette->Palette->ColorData[i+2]->RGB.rgbBlue = PaletteForm->DIB256Palette->Palette->ColorData[j+2]->RGB.rgbBlue; PaletteForm->DIB256Palette->Palette->ColorData[j+2]->RGB.rgbRed = temp.rgbRed; PaletteForm->DIB256Palette->Palette->ColorData[j+2]->RGB.rgbGreen = temp.rgbGreen; PaletteForm->DIB256Palette->Palette->ColorData[j+2]->RGB.rgbBlue = temp.rgbBlue; } } } // Á¤·ÄµÈ Palette ¿¡ Àû¿ëÇÒ index ÀÇ ¹è¿­ »ý¼º for(i = 0 ; i < PCount; i++){ for(j = 0 ; j < PCount; j++) { if( (sColor[i].rgbRed == PaletteForm->DIB256Palette->Palette->ColorData[j+2]->RGB.rgbRed) && (sColor[i].rgbGreen == PaletteForm->DIB256Palette->Palette->ColorData[j+2]->RGB.rgbGreen) && (sColor[i].rgbBlue == PaletteForm->DIB256Palette->Palette->ColorData[j+2]->RGB.rgbBlue)) { PaletteIndex[i] = j+2; break; } } } delete []APSColor; delete []sColor; MainImageForm->iMainImage->uBitmap->StartScanLine(); if(MainImageForm->WorkArea->Mask){ RECT Dst; COLORREF C; rect = MainImageForm->WorkArea->Range; Dst = Rect(0,0,MainImageForm->iMainImage->uBitmap->Width,MainImageForm->iMainImage->uBitmap->Height); if ((tb = new TTexpiaBitmap)==NULL) { ec = EC_MEMORY_LACK; goto fail; } tb->Create(rect.right - rect.left, rect.bottom - rect.top, 8, rgb); C = PaletteForm->DIB256Palette->GetBGCOLORREF(8); // ÀÛ¾÷¿µ¿ª À̹ÌÁö¸¦ tb À̹ÌÁö¿¡ º¹»ç tb->StartScanLine(); for(i = rect.top ; i < rect.bottom; i++) { bp = MainImageForm->iMainImage->uBitmap->GetScanLine(i); tempbp = tb->GetScanLine(i - rect.top); for(j = rect.left ; j < rect.right; j++) { tempbp[j-rect.left] = bp[j]; } tb->PutScanLine(i-rect.top); } // ¸ÞÀÎ À̹ÌÁö¸¦ ¹è°æ»öÀ¸·Î ä¿ò MainImageForm->iMainImage->uBitmap->FillRect(Dst, C); // tb À̹ÌÁö¿¡ µû¶ó ¸ÞÀÎ À̹ÌÁöÀÇ ÀÛ¾÷¿µ¿ªÀ» º¯°æ for(i = rect.top ; i < rect.bottom; i++) { bp = MainImageForm->iMainImage->uBitmap->GetScanLine(i); tempbp = tb->GetScanLine(i - rect.top); for(j = rect.left ; j < rect.right; j++) { if(*(tempbp + j - rect.left) == 1){ bp[j] = 52; } else { bp[j] = ((BYTE)(PaletteIndex[*(tempbp+j-rect.left)-2])-2) * Interval +2; } } MainImageForm->iMainImage->uBitmap->PutScanLine(i); } tb->StopScanLine(); delete tb; } else { for(i = 0 ;i < MainImageForm->iMainImage->uBitmap->Height;i++){ bp = MainImageForm->iMainImage->uBitmap->GetScanLine(i); for(j = 0 ; j < MainImageForm->iMainImage->uBitmap->Width;j++) { if(*(bp+j) == 1) bp[j] = 52; else{ bp[j] = ((BYTE)(PaletteIndex[*(bp+j)-2]) - 2) * Interval +2; } } MainImageForm->iMainImage->uBitmap->PutScanLine(i); } } MainImageForm->iMainImage->uBitmap->StopScanLine(); // ¹è°æ»öÀ» ÁöÁ¤ PaletteForm->DIB256Palette->Palette->ColorData[1]->RGB.rgbRed = 0; PaletteForm->DIB256Palette->Palette->ColorData[1]->RGB.rgbGreen = 0; PaletteForm->DIB256Palette->Palette->ColorData[1]->RGB.rgbBlue = 0; // Palette ÀÇ »ö±ò ÁöÁ¤ for(i = 2 ; i< 53; i++){ PaletteForm->DIB256Palette->Palette->ColorData[i]->RGB.rgbRed = (i-2) * 4.9; PaletteForm->DIB256Palette->Palette->ColorData[i]->RGB.rgbGreen = (i-2)* 4.9; PaletteForm->DIB256Palette->Palette->ColorData[i]->RGB.rgbBlue = (i-2) * 4.9; } ::RepaintColor(); sbRearrange->Enabled = false; // MainMenuForm->Rearrange1->Enabled = false; Screen->Cursor = OldCursor; return; fail: if (tb) delete tb; EXCEPTION_MESSAGE_OK(ec); } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::sbRunClick(TObject *Sender) { //* Be Converted by linuxjun Undo_Method TEXPIAFILEHEADER tpfh; int ec; TTexVersion ver; THLS APMask; COLORREF temp; Byte *bpMainImage,*bpMaskImage,*bpUndo,*bpMp,mm; TPalette *spalette = NULL; RECT rect; int x,y,xx,yy; double APRange,ratio; AnsiString fn; HANDLE hFile = INVALID_HANDLE_VALUE; bool undoSw = false; ec = EC_NONE; TCursor OldCursor; TPItemImage *Image = MainImageForm->iMainImage; if(store->Count <= 0) return; if(!first){ if(MainImageForm->WorkArea->Mask){ rect = MainImageForm->WorkArea->Range; if ((undoSw = MainImageForm->UndoSave(UK_PATTERN, rect)) == false) { ec = EC_MEMORY_LACK; goto fail; } }else { if ((undoSw = MainImageForm->UndoSave(UK_PATTERN, Rect(0, 0, MainImageForm->iMainImage->uBitmap->Width, MainImageForm->iMainImage->uBitmap->Height))) == false) { ec = EC_MEMORY_LACK; goto fail; } } first = true; } if (Bitmap) delete Bitmap; if ((Bitmap = new TTexpiaBitmap) == NULL) { ec = EC_MEMORY_LACK; goto fail; } if ((spalette = new TPalette)==NULL) { ec = EC_MEMORY_LACK; goto fail; } fn = ((TFileInfor *) store->Items[ScrollBar1->Position])->Name; if ((hFile = CreateFile(fn.c_str(),GENERIC_READ, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) { ec = EC_MEMORY_LACK; goto fail; } if ((ec = LoadFromTexpiaFile(hFile, spalette, tpfh, Bitmap))!=EC_NONE) goto fail; CloseHandle(hFile); delete spalette; APRange = DensityScroll->Position / 5000.0; ud = MainImageForm->Undo->GetLast(); MainImageForm->iMainImage->uBitmap->PartialUndo->LoadLast(ud->FromRgb); ratio = ReproScroll->Position / 100.0; Bitmap->ResizeStretch(int (ratio * Bitmap->Width), int(ratio * Bitmap->Height)); Image->uBitmap->StartScanLine(); Bitmap->StartScanLine(); MainImageForm->iMainImage->uBitmap->StartUndoScanLine(); //by linuxjun OldCursor = Screen->Cursor; Screen->Cursor = crHourGlass; // Undo À̹ÌÁö¿Í pattern À̹ÌÁö¸¦ Àоî Main À̹ÌÁö¿¡ È¿°ú¸¦ ÁÜ. if(MainImageForm->WorkArea->Mask){ // ÀÛ¾÷ ¿µ¿ªÀÌ ÀÖÀ»½Ã rect = MainImageForm->WorkArea->Range; StatusProgress->Maximum = rect.bottom - rect.top; MainImageForm->WorkArea->Mask->StartScanLine(); for(y = rect.top, yy = 0 ; y < rect.bottom; y++,yy++) { StatusProgress->Position = y - rect.top; bpMainImage = Image->uBitmap->GetScanLine(y) + 3*rect.left; //MainImage bpMaskImage = Bitmap->GetScanLine(yy%Bitmap->Height); //Pattern // bpUndo = ud->uBitmap->GetScanLine(y - rect.top); // UndoImage bpUndo = MainImageForm->iMainImage->uBitmap->GetUndoScanLine(y,rect.left,rect.right) + 3*rect.left; // UndoImage bpMp = (Byte *)MainImageForm->WorkArea->Mask->GetScanLine(y-rect.top); mm = 0x80; for(x = rect.left ,xx =0; x < rect.right; x++,xx++,bpMainImage+=3,bpUndo+=3) { if((*(bpMp) & mm)) { GetPixel24(bpUndo,temp); // UndoImage¸¦ Àбâ TColor2HLS((TColor)temp, APMask.Hue, APMask.Lig, APMask.Sat); APMask.Lig += (*(bpMaskImage+(xx%Bitmap->Width)) - 26) * APRange; // ¸íµµ°ª º¯°æ if(APMask.Lig < 0) APMask.Lig = 0 ; if(APMask.Lig > 1) APMask.Lig = 1.0; temp = HLS2TColor(APMask.Hue,APMask.Lig,APMask.Sat); SetPixel24(bpMainImage, temp); //MainImage ¿¡ ¾²±â } if (mm==1) { bpMp++; mm = 0x80; } else mm >>= 1; } Image->uBitmap->PutScanLine(y); } MainImageForm->WorkArea->Mask->StopScanLine(); } else { StatusProgress->Maximum = Image->uBitmap->Height; for(y=0,yy=0 ;yuBitmap->Height;y++,yy++){ StatusProgress->Position = y; bpMainImage = Image->uBitmap->GetScanLine(y) ; // MainImage bpMaskImage = Bitmap->GetScanLine(yy%Bitmap->Height); // pattern bpUndo = MainImageForm->iMainImage->uBitmap->GetUndoScanLine(y) ; // UndoImage for(x = 0,xx = 0 ; x < Image->uBitmap->Width;x++,xx++,bpUndo+=3,bpMainImage+=3) { GetPixel24(bpUndo,temp); // UndoImage¸¦ Àбâ TColor2HLS((TColor)temp,APMask.Hue,APMask.Lig,APMask.Sat); APMask.Lig += (*(bpMaskImage+(xx%Bitmap->Width)) - 26) * APRange; if(APMask.Lig < 0) APMask.Lig = 0 ; if(APMask.Lig > 1) APMask.Lig = 1.0; temp = HLS2TColor(APMask.Hue,APMask.Lig,APMask.Sat); SetPixel24(bpMainImage, temp); //MainImage ¿¡ ¾²±â } Image->uBitmap->PutScanLine(y); } } StatusProgress->End(); Bitmap->StopScanLine(); Image->uBitmap->StopScanLine(); // ud->uBitmap->StopScanLine() ; MainImageForm->iMainImage->uBitmap->StopUndoScanLine(); //by linuxjun // ud->Complete(); ::RepaintColor(); Screen->Cursor = OldCursor; return; fail: if (Bitmap) delete Bitmap; if (spalette) delete spalette; if (hFile != INVALID_HANDLE_VALUE) CloseHandle(hFile); if (undoSw == true) { // ud->Complete(); MainImageForm->Undo->RemoveLast(); } MainImageForm->iMainImage->uBitmap->StopUndoScanLine(); //by linuxjun EXCEPTION_MESSAGE_OK(ec); //*/ /* BeConverted by linuxjun Don't Forget!! Undo_Method TEXPIAFILEHEADER tpfh; int ec; TTexVersion ver; THLS APMask; COLORREF temp; Byte *bpMainImage,*bpMaskImage,*bpUndo,*bpMp,mm; TPalette *spalette = NULL; RECT rect; int x,y,xx,yy; double APRange,ratio; AnsiString fn; HANDLE hFile = INVALID_HANDLE_VALUE; bool undoSw = false; ec = EC_NONE; TCursor OldCursor; TPItemImage *Image = MainImageForm->iMainImage; if(store->Count <= 0) return; if(!first){ if(MainImageForm->WorkArea->Mask){ rect = MainImageForm->WorkArea->Range; if ((undoSw = MainImageForm->UndoSave(UK_PATTERN, rect)) == false) { ec = EC_MEMORY_LACK; goto fail; } }else { if ((undoSw = MainImageForm->UndoSave(UK_PATTERN, Rect(0, 0, MainImageForm->iMainImage->uBitmap->Width, MainImageForm->iMainImage->uBitmap->Height))) == false) { ec = EC_MEMORY_LACK; goto fail; } } first = true; } if (Bitmap) delete Bitmap; if ((Bitmap = new TTexpiaBitmap) == NULL) { ec = EC_MEMORY_LACK; goto fail; } if ((spalette = new TPalette)==NULL) { ec = EC_MEMORY_LACK; goto fail; } fn = ((TFileInfor *) store->Items[ScrollBar1->Position])->Name; if ((hFile = CreateFile(fn.c_str(),GENERIC_READ, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) { ec = EC_MEMORY_LACK; goto fail; } if ((ec = LoadFromTexpiaFile(hFile, spalette, tpfh, Bitmap))!=EC_NONE) goto fail; CloseHandle(hFile); delete spalette; APRange = DensityScroll->Position / 5000.0; ud = MainImageForm->Undo->GetLast(); ratio = ReproScroll->Position / 100.0; Bitmap->ResizeStretch(int (ratio * Bitmap->Width), int(ratio * Bitmap->Height)); Image->uBitmap->StartScanLine(); Bitmap->StartScanLine(); ud->Bitmap->StartScanLine(); OldCursor = Screen->Cursor; Screen->Cursor = crHourGlass; // Undo À̹ÌÁö¿Í pattern À̹ÌÁö¸¦ Àоî Main À̹ÌÁö¿¡ È¿°ú¸¦ ÁÜ. if(MainImageForm->WorkArea->Mask){ // ÀÛ¾÷ ¿µ¿ªÀÌ ÀÖÀ»½Ã rect = MainImageForm->WorkArea->Range; StatusProgress->Maximum = rect.bottom - rect.top; MainImageForm->WorkArea->Mask->StartScanLine(); for(y = rect.top, yy = 0 ; y < rect.bottom; y++,yy++) { StatusProgress->Position = y - rect.top; bpMainImage = Image->uBitmap->GetScanLine(y) + 3*rect.left; //MainImage bpMaskImage = Bitmap->GetScanLine(yy%Bitmap->Height); //Pattern bpUndo = ud->Bitmap->GetScanLine(y - rect.top); // UndoImage bpMp = (Byte *)MainImageForm->WorkArea->Mask->GetScanLine(y-rect.top); mm = 0x80; for(x = rect.left ,xx =0; x < rect.right; x++,xx++,bpMainImage+=3,bpUndo+=3) { if((*(bpMp) & mm)) { GetPixel24(bpUndo,temp); // UndoImage¸¦ Àбâ TColor2HLS((TColor)temp, APMask.Hue, APMask.Lig, APMask.Sat); APMask.Lig += (*(bpMaskImage+(xx%Bitmap->Width)) - 26) * APRange; // ¸íµµ°ª º¯°æ if(APMask.Lig < 0) APMask.Lig = 0 ; if(APMask.Lig > 1) APMask.Lig = 1.0; temp = HLS2TColor(APMask.Hue,APMask.Lig,APMask.Sat); SetPixel24(bpMainImage, temp); //MainImage ¿¡ ¾²±â } if (mm==1) { bpMp++; mm = 0x80; } else mm >>= 1; } Image->uBitmap->PutScanLine(y); } MainImageForm->WorkArea->Mask->StopScanLine(); } else { StatusProgress->Maximum = Image->uBitmap->Height; for(y=0,yy=0 ;yuBitmap->Height;y++,yy++){ StatusProgress->Position = y; bpMainImage = Image->uBitmap->GetScanLine(y) ; // MainImage bpMaskImage = Bitmap->GetScanLine(yy%Bitmap->Height); // pattern bpUndo = ud->Bitmap->GetScanLine(y) ; // UndoImage for(x = 0,xx = 0 ; x < Image->uBitmap->Width;x++,xx++,bpUndo+=3,bpMainImage+=3) { GetPixel24(bpUndo,temp); // UndoImage¸¦ Àбâ TColor2HLS((TColor)temp,APMask.Hue,APMask.Lig,APMask.Sat); APMask.Lig += (*(bpMaskImage+(xx%Bitmap->Width)) - 26) * APRange; if(APMask.Lig < 0) APMask.Lig = 0 ; if(APMask.Lig > 1) APMask.Lig = 1.0; temp = HLS2TColor(APMask.Hue,APMask.Lig,APMask.Sat); SetPixel24(bpMainImage, temp); //MainImage ¿¡ ¾²±â } Image->uBitmap->PutScanLine(y); } } StatusProgress->End(); Bitmap->StopScanLine(); Image->uBitmap->StopScanLine(); ud->Bitmap->StopScanLine() ; // ud->Complete(); ::RepaintColor(); Screen->Cursor = OldCursor; return; fail: if (Bitmap) delete Bitmap; if (spalette) delete spalette; if (hFile != INVALID_HANDLE_VALUE) CloseHandle(hFile); if (undoSw == true) { // ud->Complete(); MainImageForm->Undo->RemoveLast(); } EXCEPTION_MESSAGE_OK(ec); //*/ } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::ReproScrollChange(TObject *Sender) { txtRepro->Value = ReproScroll->Position; } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::DensityScrollChange(TObject *Sender) { txtDensity->Value = DensityScroll->Position; } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::txtReproChange(TObject *Sender) { ReproScroll->Position = txtRepro->Value; } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::txtDensityChange(TObject *Sender) { DensityScroll->Position = txtDensity->Value; } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::WriteIniFile() { int i; TIniFile *IniFile = new TIniFile(DirectoryItem + "\\APMenu.ini"); if (IniFile) { IniFile->WriteInteger("APMenu","ReproScrollValue",ReproScroll->Position); IniFile->WriteInteger("APMenu","DensityScrollValue",DensityScroll->Position); IniFile->WriteInteger("APMenu","txtReproValue",txtRepro->Value ); IniFile->WriteInteger("APMenu","txtDensityValue",txtDensity->Value); IniFile->WriteInteger("APMenu","FileCount",store->Count); for(i = 0; i< store->Count; i++) { IniFile->WriteString(i,"Path", ((TFileInfor*)(store->Items[i]))->Name); } delete IniFile; } } //--------------------------------------------------------------------------- void __fastcall TAPMenuForm::ReadIniFile() { int i,Count; AnsiString fn; TIniFile *IniFile = new TIniFile(DirectoryItem + "\\APMenu.ini"); if (IniFile) { ReproScroll->Position = IniFile->ReadInteger("APMenu","ReproScrollValue",100); DensityScroll->Position =IniFile->ReadInteger("APMenu","DensityScrollValue",50); txtRepro->Value = IniFile->ReadInteger("APMenu","txtReproValue",100); txtDensity->Value = IniFile->ReadInteger("APMenu","txtDensityValue",50); Count = IniFile->ReadInteger("APMenu","FileCount",0); for(i = 0 ; i< Count;i++) { fn = IniFile->ReadString(i,"Path","C:\\"); InsertImage(fn); } delete IniFile; } } //--------------------------------------------------------------------------- int __fastcall TAPMenuForm::FindUseColor() { int UseColor; bool cn[256]; int i, x, y; Byte *scan; RECT r; r = MainImageForm->WorkArea->Range; for (i=0; i<=255; i++) cn[i] = false; if(MainImageForm->iMainImage->uBitmap->StartScanLine()) { for (y = r.top; y < r.bottom; y++) { scan = MainImageForm->iMainImage->uBitmap->GetScanLine(y); for (x = r.left; x < r.right; x++) cn[*(scan+x)] = true; } MainImageForm->iMainImage->uBitmap->StopScanLine(); } else {EXCEPTION_MESSAGE_OK(EC_MEMORY_LACK); return 0;} UseColor = 0; for (i=2; i<252; i++) { if (cn[i]) UseColor++; } return UseColor; } //---------------------------------------------------------------------------- void __fastcall TAPMenuForm::iMainImageKeyDown(int Key) //lhskys Èİ¡°ø¿¡¼­ ¿£ÅͽÇÇà { if(Key == 13 && MainImageForm->iMainImage->uBitmap->BitsPerPixel==24) sbRunClick(this); } //----------------------------------------------------------------------------