#ifndef BMPVIEW_H #define BMPVIEW_H #include #include #include #include #include #include enum { M_BITMAP_ADDED = 'mbma', M_BITMAP_REMOVED = 'mbmr' }; class BitmapView : public BView, public BInvoker { public: BitmapView(BRect frame, const char *name, BMessage *mod, BBitmap *bitmap, const char *label = NULL, border_style = B_PLAIN_BORDER, int32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP, int32 flags = B_WILL_DRAW); ~BitmapView(void); virtual void AttachedToWindow(void); virtual void Draw(BRect rect); virtual void MessageReceived(BMessage *msg); virtual void MouseDown(BPoint pt); virtual void FrameResized(float w, float h); virtual void SetBitmap(BBitmap *bitmap); BBitmap *GetBitmap(void) const { return fBitmap; } bool IsEnabled(void) const { return fEnabled; } virtual void SetEnabled(bool value); // const char *Label(void) const { return fLabel.String(); } // virtual void SetLabel(const char *label); border_style Style(void) const { return fBorderStyle; } virtual void SetStyle(border_style style); bool IsFixedSize(void) const { return fFixedSize; } void SetFixedSize(bool isfixed); bool AcceptsDrops(void) const { return fAcceptDrops; } virtual void SetAcceptDrops(bool accept); bool AcceptsPaste(void) const { return fAcceptPaste; } virtual void SetAcceptPaste(bool accept); bool ConstrainsDrops(void) const { return fConstrainDrops; } virtual void SetConstrainDrops(bool value); void MaxBitmapSize(float *width, float *height) const; virtual void SetMaxBitmapSize(const float &width, const float &height); bool IsBitmapRemovable(void) const { return fRemovableBitmap; } void SetBitmapRemovable(bool isremovable); void RemoveBitmap(void); void PasteBitmap(void); private: void CalculateBitmapRect(void); void ConstrainBitmap(void); bool ClipboardHasBitmap(void); BBitmap *BitmapFromClipboard(void); float fNoPhotoWidths[4]; BPoint fNoPhotoOffsets[4]; BBitmap *fBitmap; BRect fBitmapRect; bool fEnabled; BString fLabel; border_style fBorderStyle; bool fFixedSize; bool fAcceptDrops; bool fAcceptPaste; bool fConstrainDrops; float fMaxWidth, fMaxHeight; bool fRemovableBitmap; BPopUpMenu *fPopUpMenu; uint32 fMouseButtons; BMenuItem *fPasteItem; BMenuItem *fRemoveItem; }; BRect ScaleRectToFit(const BRect &from, const BRect &to); #endif