94 lines
2.4 KiB
C++
94 lines
2.4 KiB
C++
#ifndef BMPVIEW_H
|
|
#define BMPVIEW_H
|
|
|
|
#include <Bitmap.h>
|
|
#include <Message.h>
|
|
#include <Invoker.h>
|
|
#include <PopUpMenu.h>
|
|
#include <String.h>
|
|
#include <View.h>
|
|
|
|
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
|