void IconDes::BeginResize() { CancelSelect(); FinishPaste(); SaveUndo(); Refresh(); SyncShow(); }
void IconDes::SetTool(void (IconDes::*_tool)(Point p, dword flags)) { FinishPaste(); if(HasCapture()) ReleaseCapture(); tool = _tool; SetBar(); }
void IconDes::CancelSelect() { ReleaseCapture(); doselection = false; rgbactrl.Mask(false); FinishPaste(); SetSelect(255); SetBar(); }
void IconDes::Paste(const Image& img) { FinishPaste(); if(!IsCurrent()) return; Slot& c = Current(); c.base_image = c.image; c.paste_image = img; c.pastepos = Point(0, 0); MakePaste(); SetBar(); }
void IconDes::SetColor0(RGBA color) { FinishPaste(); doselection = false; rgbactrl.Mask(false); SaveUndo(); ImageBuffer ib(Current().image); MaskFill(ib, color, 255); Refresh(); SetCurrentImage(ib); SyncShow(); SetBar(); }
void IconDes::Select() { if(!IsCurrent()) return; ReleaseCapture(); FinishPaste(); doselection = !doselection; rgbactrl.Mask(doselection); if(doselection && SelectionRect() == GetImageSize()) { SetSelect(0); rgbactrl.MaskSet(255); } Refresh(); SetBar(); }
NAMESPACE_UPP void IconDes::LeftDown(Point p, dword flags) { SetFocus(); if(!IsCurrent()) return; SaveUndo(); startpoint = GetPos(p); if(IsPasting()) { if(Rect(Current().pastepos, Current().paste_image.GetSize()).Contains(startpoint)) { startpoint -= Current().pastepos; SetCapture(); } else FinishPaste(); return; } SetCapture(); Current().base_image = CurrentImage(); if(flags & K_SHIFT) { ImageBuffer ib(CurrentImage()); if(!doselection) { RGBA c = CurrentColor(); c.r += 127; MaskFill(ib, c, 0); } FloodFill(ib, CurrentColor(), startpoint, ib.GetSize()); SetCurrentImage(ib); if(!doselection) MaskSelection(); return; } if(selectrect) EmptyRectTool(startpoint, flags); else if(tool) (this->*tool)(startpoint, flags); }
void IconDes::Move() { if(!IsCurrent()) return; Slot& c = Current(); selectrect = false; if(IsPasting()) FinishPaste(); else { doselection = false; rgbactrl.Mask(false); rgbactrl.Hide(); Rect r = SelectionRect(); Image m = Copy(r); Delete(); SetSelect(255); c.base_image = c.image; c.paste_image = m; c.pastepos = r.TopLeft(); MakePaste(); } SetBar(); }