]> git.saurik.com Git - wxWidgets.git/commitdiff
Minor update to wxCanvas.
authorRobert Roebling <robert@roebling.de>
Sun, 3 Sep 2000 16:38:53 +0000 (16:38 +0000)
committerRobert Roebling <robert@roebling.de>
Sun, 3 Sep 2000 16:38:53 +0000 (16:38 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

contrib/include/wx/canvas/canvas.h
contrib/src/canvas/canvas.cpp

index 6c3747eed2a5c907cbcc0828f9cf1a874ccb96fd..b82b3da636573726b8759343fb47472de8b55080 100644 (file)
@@ -33,10 +33,18 @@ class wxCanvasObject: public wxEvtHandler
 public:
     wxCanvasObject( int x, int y, int width, int height );
     
+    // These are for screen output only therefore use
+    // int as coordinates.
     virtual void Move( int x, int y );
     virtual bool IsHit( int x, int y, int margin = 0 );
-    
     virtual void Render( int clip_x, int clip_y, int clip_width, int clip_height );
+    
+    // Once we have world coordinates in doubles, this will get
+    // called for every object if the world coordinate system
+    // changes (zooming).
+    virtual void Rerender();
+
+    // Later...
     virtual void WriteSVG( wxTextOutputStream &stream );
     
     wxCanvas   *GetOwner()              { return m_owner; }
@@ -188,6 +196,7 @@ public:
     
     wxImage *GetBuffer()         { return &m_buffer; }
     bool NeedUpdate()            { return m_needUpdate; }
+    bool IsFrozen()              { return m_frozen; }
     
     void BlitBuffer( wxDC &dc );
     
@@ -200,7 +209,6 @@ private:
     bool             m_frozen;
     wxCanvasObject  *m_lastMouse;
     
-    
     friend class wxCanvasObject;
     
 private:
index e248757bdcf85b0163f7cebeda2cd69a0f9757b7..ead4b808b7bf08b4503c6997352ce3e4d4e5e20b 100644 (file)
     #include "wx/gtk/win_gtk.h"
 #endif
 
-#define USE_FREETYPE 1
+#ifndef wxUSE_FREETYPE
+    #define wxUSE_FREETYPE 1
+#endif
 
-#if USE_FREETYPE
-#include <freetype/freetype.h>
+#if wxUSE_FREETYPE
+    #include <freetype/freetype.h>
 #endif
 
 //----------------------------------------------------------------------------
 // globals
 //----------------------------------------------------------------------------
 
-#if USE_FREETYPE
+#if wxUSE_FREETYPE
 FT_Library g_freetypeLibrary;
 #endif
 
@@ -80,11 +82,15 @@ bool wxCanvasObject::IsHit( int x, int y, int margin )
             (y <= m_area.y+m_area.height+margin));
 }
 
-void wxCanvasObject::WriteSVG( wxTextOutputStream &stream )
+void wxCanvasObject::Render( int clip_x, int clip_y, int clip_width, int clip_height )
 {
 }
 
-void wxCanvasObject::Render( int clip_x, int clip_y, int clip_width, int clip_height )
+void wxCanvasObject::Rerender()
+{
+}
+
+void wxCanvasObject::WriteSVG( wxTextOutputStream &stream )
 {
 }
 
@@ -198,6 +204,7 @@ void wxCanvasLine::Render( int clip_x, int clip_y, int clip_width, int clip_heig
 
 void wxCanvasLine::WriteSVG( wxTextOutputStream &stream )
 {
+    // no idea
 }
 
 //----------------------------------------------------------------------------
@@ -272,7 +279,7 @@ void wxCanvasControl::UpdateSize()
 class wxFaceData
 {
 public:
-#if USE_FREETYPE
+#if wxUSE_FREETYPE
      FT_Face   m_face;
 #else
      void     *m_dummy;
@@ -296,7 +303,7 @@ wxCanvasText::wxCanvasText( const wxString &text, int x, int y, const wxString &
     m_alpha = new unsigned char[100*m_size];
     memset( m_alpha, 0, m_area.width*m_area.height );
     
-#if USE_FREETYPE    
+#if wxUSE_FREETYPE    
     wxFaceData *data = new wxFaceData;
     m_faceData = data;
     
@@ -316,7 +323,7 @@ wxCanvasText::wxCanvasText( const wxString &text, int x, int y, const wxString &
 
 wxCanvasText::~wxCanvasText()
 {
-#if USE_FREETYPE    
+#if wxUSE_FREETYPE    
     wxFaceData *data = (wxFaceData*) m_faceData;
     delete data;
 #endif
@@ -384,7 +391,7 @@ void wxCanvasText::WriteSVG( wxTextOutputStream &stream )
 
 void wxCanvasText::CreateBuffer()
 {
-#if USE_FREETYPE    
+#if wxUSE_FREETYPE    
     FT_Face face = ((wxFaceData*)m_faceData)->m_face;
     FT_GlyphSlot slot = face->glyph;
     int pen_x = 0;
@@ -761,8 +768,8 @@ void wxCanvas::OnMouse(wxMouseEvent &event)
                 {
                     wxMouseEvent child_event( wxEVT_MOTION );
                     child_event.SetEventObject( obj );
-                    child_event.m_x = x + obj->GetX();
-                    child_event.m_y = y + obj->GetY();
+                    child_event.m_x = x - obj->GetX();
+                    child_event.m_y = y - obj->GetY();
                     child_event.m_leftDown = event.m_leftDown;
                     child_event.m_rightDown = event.m_rightDown;
                     child_event.m_middleDown = event.m_middleDown;
@@ -775,15 +782,15 @@ void wxCanvas::OnMouse(wxMouseEvent &event)
                     {
                         child_event.SetEventType( wxEVT_LEAVE_WINDOW );
                         child_event.SetEventObject( m_lastMouse );
-                        child_event.m_x = x + m_lastMouse->GetX();
-                        child_event.m_y = y + m_lastMouse->GetY();
+                        child_event.m_x = x - m_lastMouse->GetX();
+                        child_event.m_y = y - m_lastMouse->GetY();
                         m_lastMouse->ProcessEvent( child_event );
                         
                         m_lastMouse = obj;
                         child_event.SetEventType( wxEVT_ENTER_WINDOW );
                         child_event.SetEventObject( m_lastMouse );
-                        child_event.m_x = x + m_lastMouse->GetX();
-                        child_event.m_y = y + m_lastMouse->GetY();
+                        child_event.m_x = x - m_lastMouse->GetX();
+                        child_event.m_y = y - m_lastMouse->GetY();
                         m_lastMouse->ProcessEvent( child_event );
                         
                         child_event.SetEventType( wxEVT_MOTION );
@@ -799,8 +806,8 @@ void wxCanvas::OnMouse(wxMouseEvent &event)
         {
             wxMouseEvent child_event( wxEVT_LEAVE_WINDOW );
             child_event.SetEventObject( m_lastMouse );
-            child_event.m_x = x + m_lastMouse->GetX();
-            child_event.m_y = y + m_lastMouse->GetY();
+            child_event.m_x = x - m_lastMouse->GetX();
+            child_event.m_y = y - m_lastMouse->GetY();
             child_event.m_leftDown = event.m_leftDown;
             child_event.m_rightDown = event.m_rightDown;
             child_event.m_middleDown = event.m_middleDown;
@@ -859,7 +866,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxCanvasModule, wxModule)
 
 bool wxCanvasModule::OnInit()
 {
-#if USE_FREETYPE
+#if wxUSE_FREETYPE
     int error = FT_Init_FreeType( &g_freetypeLibrary );
     if (error) return FALSE;
 #endif
@@ -869,7 +876,7 @@ bool wxCanvasModule::OnInit()
 
 void wxCanvasModule::OnExit()
 {
-#if USE_FREETYPE
+#if wxUSE_FREETYPE
     FT_Done_FreeType( g_freetypeLibrary );
 #endif
 }