]> git.saurik.com Git - wxWidgets.git/commitdiff
wxMotif compiles and links now.
authorRobert Roebling <robert@roebling.de>
Wed, 23 Jun 1999 15:25:23 +0000 (15:25 +0000)
committerRobert Roebling <robert@roebling.de>
Wed, 23 Jun 1999 15:25:23 +0000 (15:25 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2878 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

configure.in
include/wx/motif/dc.h
include/wx/motif/dcclient.h
include/wx/motif/dcmemory.h
src/motif/Makefile.am
src/motif/dc.cpp
src/motif/dcclient.cpp
src/motif/dcmemory.cpp

index df29b962d225405d64bf937e6e46903a5280f74d..b047a82156a8cba83ac893557e37a49511392f35 100644 (file)
@@ -1078,7 +1078,7 @@ if test "$wxUSE_MOTIF" = 1; then
         AC_MSG_WARN(library will be compiled without support for images in XPM format)
     fi
 
-    GUI_TK_LINK="-lXm $XPM_LINK -lXmu -lXt -lX11 -lm"
+    GUI_TK_LINK="-lXm $XPM_LINK -lXmu -lXt -lX11 -ldl -lm"
     GUI_TK_LIBRARY="$GUI_TK_LIBRARY $GUI_TK_LINK"
     TOOLKIT=MOTIF
 fi
index aa4ffe8a57be8b393e376afe343147e4d8ec4538..393de86fffb56f20d6403997a50ceb265104f4aa 100644 (file)
@@ -58,12 +58,10 @@ public:
 
     virtual void SetMapMode(int mode);
     virtual void SetUserScale(double x, double y);
-    virtual void SetSystemScale(double x, double y);
     virtual void SetLogicalScale(double x, double y);
     virtual void SetLogicalOrigin(long x, long y);
     virtual void SetDeviceOrigin(long x, long y);
     virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
-    virtual void SetLogicalFunction(int function);
 
 protected:
     virtual void DoDrawIcon(const wxIcon& icon, long x, long y);
index c7d6c2c205b4d231089f47ebee19acab8c386d82..ddeee5fc414cfb305a9bbd70cd518f61ddaab6b8 100644 (file)
@@ -122,9 +122,6 @@ protected:
     virtual void DoSetClippingRegion(long x, long y,
             long width, long height);
 
-    virtual void DoGetSize(int *width, int *height) const;
-    virtual void DoGetSizeMM(int* width, int* height) const;
-
     virtual void DoDrawLines(int n, wxPoint points[],
             long xoffset, long yoffset);
     virtual void DoDrawPolygon(int n, wxPoint points[],
index 40434bd5f4c2c060940dfa06c519b5e5d438fcd6..51b16b19c9a192f04956b0489002727c357d170c 100644 (file)
@@ -29,7 +29,7 @@ public:
 
     virtual void SelectObject( const wxBitmap& bitmap );
 
-    void GetSize( int *width, int *height ) const;
+    void DoGetSize( int *width, int *height ) const;
 
     wxBitmap& GetBitmap() const { return (wxBitmap&) m_bitmap; }
 
index 22e18533934e1b2c72643524cc2c4c0bc8025015..f898f12162dd79b5860aa390082d76721453fd5e 100644 (file)
@@ -12,7 +12,7 @@ SUFFIXES = .cpp .c
 DEFS = $(TOOLKIT_DEF) $(WXDEBUG_DEFINE)
 LIBS = $(GUILIBS)
 
-VPATH = .:${srcdir}:${srcdir}/../common:${srcdir}/../generic:${EXTRA_VPATH}
+VPATH = .:${srcdir}:${srcdir}/xmcombo:${srcdir}/../common:${srcdir}/../generic:${EXTRA_VPATH}
 
 EXTRA_DIST = "${srcdir}/../common ${srcdir}/../generic ${srcdir}"
 
@@ -30,6 +30,7 @@ libwx_motif_la_SOURCES = \
 \
  extended.c \
  parser.c \
+ xmcombo.c \
 \
  cmndata.cpp \
  dynarray.cpp \
@@ -165,6 +166,7 @@ libwx_motif_la_SOURCES = \
  main.cpp \
  mdi.cpp \
  menu.cpp \
+ menuitem.cpp \
  minifram.cpp \
  notebook.cpp \
  palette.cpp \
index ef06e450a4f95c1c2f4151a728d5d70e16d5972d..c60397ea6f724d9115c0853c8fd8b738b79e062d 100644 (file)
@@ -149,13 +149,17 @@ void wxDC::SetMapMode( int mode )
 
 void wxDC::SetUserScale( double x, double y )
 {
-    wxDCBase::SetUserScale(x, y);
+    // allow negative ? -> no
+    m_userScaleX = x;
+    m_userScaleY = y;
     ComputeScaleAndOrigin();
 }
 
 void wxDC::SetLogicalScale( double x, double y )
 {
-    wxDCBase::SetLogicalScale(x, y);
+    // allow negative ?
+    m_logicalScaleX = x;
+    m_logicalScaleY = y;
     ComputeScaleAndOrigin();
 }
 
index 8336c61a64910c58e28822ac5b669dc620dc9dd0..7e2c71d1c880c480811461ad9c919cf5e088a4ae 100644 (file)
@@ -2075,6 +2075,178 @@ int wxWindowDC::GetDepth() const
     return 24;
 }
 
+#if wxUSE_SPLINES
+// ----------------------------------- spline code ----------------------------------------
+
+void wx_quadratic_spline(double a1, double b1, double a2, double b2,
+                         double a3, double b3, double a4, double b4);
+void wx_clear_stack();
+int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, double *x3,
+        double *y3, double *x4, double *y4);
+void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3,
+          double x4, double y4);
+static bool wx_spline_add_point(double x, double y);
+static void wx_spline_draw_point_array(wxDC *dc);
+
+wxList wx_spline_point_list;
+
+#define                half(z1, z2)        ((z1+z2)/2.0)
+#define                THRESHOLD        5
+
+/* iterative version */
+
+void wx_quadratic_spline(double a1, double b1, double a2, double b2, double a3, double b3, double a4,
+                 double b4)
+{
+    register double  xmid, ymid;
+    double           x1, y1, x2, y2, x3, y3, x4, y4;
+
+    wx_clear_stack();
+    wx_spline_push(a1, b1, a2, b2, a3, b3, a4, b4);
+
+    while (wx_spline_pop(&x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4)) {
+        xmid = (double)half(x2, x3);
+        ymid = (double)half(y2, y3);
+        if (fabs(x1 - xmid) < THRESHOLD && fabs(y1 - ymid) < THRESHOLD &&
+            fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD) {
+            wx_spline_add_point( x1, y1 );
+            wx_spline_add_point( xmid, ymid );
+        } else {
+            wx_spline_push(xmid, ymid, (double)half(xmid, x3), (double)half(ymid, y3),
+                 (double)half(x3, x4), (double)half(y3, y4), x4, y4);
+            wx_spline_push(x1, y1, (double)half(x1, x2), (double)half(y1, y2),
+                 (double)half(x2, xmid), (double)half(y2, ymid), xmid, ymid);
+        }
+    }
+}
+
+/* utilities used by spline drawing routines */
+
+typedef struct wx_spline_stack_struct {
+    double           x1, y1, x2, y2, x3, y3, x4, y4;
+} Stack;
+
+#define         SPLINE_STACK_DEPTH             20
+static Stack    wx_spline_stack[SPLINE_STACK_DEPTH];
+static Stack   *wx_stack_top;
+static int      wx_stack_count;
+
+void wx_clear_stack()
+{
+    wx_stack_top = wx_spline_stack;
+    wx_stack_count = 0;
+}
+
+void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
+{
+    wx_stack_top->x1 = x1;
+    wx_stack_top->y1 = y1;
+    wx_stack_top->x2 = x2;
+    wx_stack_top->y2 = y2;
+    wx_stack_top->x3 = x3;
+    wx_stack_top->y3 = y3;
+    wx_stack_top->x4 = x4;
+    wx_stack_top->y4 = y4;
+    wx_stack_top++;
+    wx_stack_count++;
+}
+
+int wx_spline_pop(double *x1, double *y1, double *x2, double *y2,
+                  double *x3, double *y3, double *x4, double *y4)
+{
+    if (wx_stack_count == 0)
+        return (0);
+    wx_stack_top--;
+    wx_stack_count--;
+    *x1 = wx_stack_top->x1;
+    *y1 = wx_stack_top->y1;
+    *x2 = wx_stack_top->x2;
+    *y2 = wx_stack_top->y2;
+    *x3 = wx_stack_top->x3;
+    *y3 = wx_stack_top->y3;
+    *x4 = wx_stack_top->x4;
+    *y4 = wx_stack_top->y4;
+    return (1);
+}
+
+static bool wx_spline_add_point(double x, double y)
+{
+  wxPoint *point = new wxPoint ;
+  point->x = (int) x;
+  point->y = (int) y;
+  wx_spline_point_list.Append((wxObject*)point);
+  return TRUE;
+}
+
+static void wx_spline_draw_point_array(wxDC *dc)
+{
+  dc->DrawLines(&wx_spline_point_list, 0, 0 );
+  wxNode *node = wx_spline_point_list.First();
+  while (node)
+  {
+    wxPoint *point = (wxPoint *)node->Data();
+    delete point;
+    delete node;
+    node = wx_spline_point_list.First();
+  }
+}
+
+void wxWindowDC::DoDrawSpline( wxList *points )
+{
+    wxCHECK_RET( Ok(), _T("invalid window dc") );
+  
+    wxPoint *p;
+    double           cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4;
+    double           x1, y1, x2, y2;
+
+    wxNode *node = points->First();
+    p = (wxPoint *)node->Data();
+
+    x1 = p->x;
+    y1 = p->y;
+
+    node = node->Next();
+    p = (wxPoint *)node->Data();
+
+    x2 = p->x;
+    y2 = p->y;
+    cx1 = (double)((x1 + x2) / 2);
+    cy1 = (double)((y1 + y2) / 2);
+    cx2 = (double)((cx1 + x2) / 2);
+    cy2 = (double)((cy1 + y2) / 2);
+
+    wx_spline_add_point(x1, y1);
+
+    while ((node = node->Next()) != NULL)
+    {
+        p = (wxPoint *)node->Data();
+        x1 = x2;
+        y1 = y2;
+        x2 = p->x;
+        y2 = p->y;
+        cx4 = (double)(x1 + x2) / 2;
+        cy4 = (double)(y1 + y2) / 2;
+        cx3 = (double)(x1 + cx4) / 2;
+        cy3 = (double)(y1 + cy4) / 2;
+
+        wx_quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4);
+
+        cx1 = cx4;
+        cy1 = cy4;
+        cx2 = (double)(cx1 + x2) / 2;
+        cy2 = (double)(cy1 + y2) / 2;
+    }
+
+    wx_spline_add_point( cx1, cy1 );
+    wx_spline_add_point( x2, y2 );
+
+    wx_spline_draw_point_array( this );
+}
+
+#endif // wxUSE_SPLINE
+
+
+
 // ----------------------------------------------------------------------------
 // wxPaintDC
 // ----------------------------------------------------------------------------
index 85291b7c620a0d225f3410768022166d65b75ec0..9a6c4271c87cd066fb5bf6d3e84e6a6861eae691 100644 (file)
@@ -131,7 +131,7 @@ void wxMemoryDC::SelectObject( const wxBitmap& bitmap )
     };
 };
 
-void wxMemoryDC::GetSize( int *width, int *height ) const
+void wxMemoryDC::DoGetSize( int *width, int *height ) const
 {
     if (m_bitmap.Ok())
     {