wxWidgets/samples/dragimag/dragimag.h
Vadim Zeitlin 3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00

191 lines
4.6 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: dragimag.h
// Purpose: wxDragImage sample
// Author: Julian Smart
// Modified by:
// Created: 28/2/2000
// Copyright: (c) Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_DRAGIMAGSAMPLE_
#define _WX_DRAGIMAGSAMPLE_
// derived classes
class MyFrame;
class MyApp;
class MyCanvas;
class DragShape;
// MyFrame
class MyFrame: public wxFrame
{
public:
MyFrame();
void OnAbout( wxCommandEvent &event );
void OnQuit( wxCommandEvent &event );
MyCanvas* GetCanvas() const { return m_canvas; }
void SetCanvas(MyCanvas* canvas) { m_canvas = canvas; }
private:
MyCanvas* m_canvas;
DECLARE_DYNAMIC_CLASS(MyFrame)
DECLARE_EVENT_TABLE()
};
// MyApp
class MyApp: public wxApp
{
public:
MyApp();
virtual bool OnInit();
virtual int OnExit();
//// Operations
// Tile the bitmap
bool TileBitmap(const wxRect& rect, wxDC& dc, wxBitmap& bitmap);
//// Accessors
wxBitmap& GetBackgroundBitmap() const { return (wxBitmap&) m_background; }
bool GetUseScreen() const { return m_useScreen; }
void SetUseScreen(bool useScreen) { m_useScreen = useScreen; }
void OnUseScreen(wxCommandEvent& event);
protected:
wxBitmap m_background;
bool m_useScreen;
DECLARE_EVENT_TABLE()
};
DECLARE_APP(MyApp)
#define TEST_USE_SCREEN 100
// MyCanvas
// Dragging modes
#define TEST_DRAG_NONE 0
#define TEST_DRAG_START 1
#define TEST_DRAG_DRAGGING 2
class MyCanvas: public wxScrolledWindow
{
public:
MyCanvas( wxWindow *parent, wxWindowID, const wxPoint &pos, const wxSize &size );
~MyCanvas();
void OnPaint( wxPaintEvent &event );
void OnEraseBackground(wxEraseEvent& event);
void OnMouseEvent(wxMouseEvent& event);
void DrawShapes(wxDC& dc);
void EraseShape(DragShape* shape, wxDC& dc);
void ClearShapes();
DragShape* FindShape(const wxPoint& pt) const;
wxList& GetDisplayList() { return m_displayList; }
protected:
private:
wxList m_displayList; // A list of DragShapes
int m_dragMode;
DragShape* m_draggedShape;
DragShape* m_currentlyHighlighted; // The shape that's being highlighted
wxPoint m_dragStartPos;
wxDragImage* m_dragImage;
DECLARE_CLASS(MyCanvas)
DECLARE_EVENT_TABLE()
};
// Ways to drag a shape
#define SHAPE_DRAG_BITMAP 1
#define SHAPE_DRAG_TEXT 2
#define SHAPE_DRAG_ICON 3
// Shape
class DragShape: public wxObject
{
public:
DragShape(const wxBitmap& bitmap);
~DragShape(){};
//// Operations
bool HitTest(const wxPoint& pt) const;
bool Draw(wxDC& dc, bool highlight = false);
//// Accessors
wxPoint GetPosition() const { return m_pos; }
void SetPosition(const wxPoint& pos) { m_pos = pos; }
wxRect GetRect() const { return wxRect(m_pos.x, m_pos.y, m_bitmap.GetWidth(), m_bitmap.GetHeight()); }
wxBitmap& GetBitmap() const { return (wxBitmap&) m_bitmap; }
void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; }
int GetDragMethod() const { return m_dragMethod; }
void SetDragMethod(int method) { m_dragMethod = method; }
bool IsShown() const { return m_show; }
void SetShow(bool show) { m_show = show; }
protected:
wxPoint m_pos;
wxBitmap m_bitmap;
int m_dragMethod;
bool m_show;
};
// MyDragImage
// A derived class is required since we're overriding UpdateBackingFromWindow,
// for compatibility with Mac OS X (Core Graphics) which does not support blitting
// from a window.
class MyDragImage: public wxDragImage
{
public:
MyDragImage(MyCanvas* canvas): m_canvas(canvas) {}
MyDragImage(MyCanvas* canvas, const wxBitmap& image, const wxCursor& cursor = wxNullCursor):
wxDragImage(image, cursor), m_canvas(canvas)
{
}
MyDragImage(MyCanvas* canvas, const wxIcon& image, const wxCursor& cursor = wxNullCursor):
wxDragImage(image, cursor), m_canvas(canvas)
{
}
MyDragImage(MyCanvas* canvas, const wxString& str, const wxCursor& cursor = wxNullCursor):
wxDragImage(str, cursor), m_canvas(canvas)
{
}
// On some platforms, notably Mac OS X with Core Graphics, we can't blit from
// a window, so we need to draw the background explicitly.
virtual bool UpdateBackingFromWindow(wxDC& windowDC, wxMemoryDC& destDC, const wxRect& sourceRect,
const wxRect& destRect) const;
protected:
MyCanvas* m_canvas;
};
#endif
// _WX_DRAGIMAGSAMPLE_