/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
+#pragma implementation "basicp.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include <wx/wx.h>
#endif
-#ifdef PROLOGIO
#include <wx/wxexpr.h>
-#endif
#if wxUSE_IOSTREAMH
#include <iostream.h>
for (i = 0; i < n; i++)
{
double xp, yp;
- if (GetAttachmentPosition(i, &xp, &yp))
+ if (GetAttachmentPositionEdge(i, &xp, &yp))
{
double l = (double)sqrt(((xp - x) * (xp - x)) +
((yp - y) * (yp - y)));
// and we would want to connect to a point on that vertical --
// oglFindEndForPolyline can't cope with this (the arrow
// gets drawn to the wrong place).
- if ((!m_attachmentMode) && (x1 == x2))
+ if ((m_attachmentMode == ATTACHMENT_MODE_NONE) && (x1 == x2))
{
// Look for the point we'd be connecting to. This is
// a heuristic...
if (m_shadowMode != SHADOW_NONE)
{
if (m_shadowBrush)
- dc.SetBrush(m_shadowBrush);
- dc.SetPen(g_oglTransparentPen);
+ dc.SetBrush(* m_shadowBrush);
+ dc.SetPen(* g_oglTransparentPen);
dc.DrawPolygon(n, intPoints, WXROUND(m_xpos + m_shadowOffsetX), WXROUND(m_ypos + m_shadowOffsetY));
}
if (m_pen)
{
if (m_pen->GetWidth() == 0)
- dc.SetPen(g_oglTransparentPen);
+ dc.SetPen(* g_oglTransparentPen);
else
- dc.SetPen(m_pen);
+ dc.SetPen(* m_pen);
}
if (m_brush)
- dc.SetBrush(m_brush);
+ dc.SetBrush(* m_brush);
dc.DrawPolygon(n, intPoints, WXROUND(m_xpos), WXROUND(m_ypos));
delete[] intPoints;
void wxPolygonShape::OnDrawOutline(wxDC& dc, double x, double y, double w, double h)
{
- dc.SetBrush(wxTRANSPARENT_BRUSH);
+ dc.SetBrush(* wxTRANSPARENT_BRUSH);
// Multiply all points by proportion of new size to old size
double x_proportion = (double)(fabs(w/m_originalWidth));
double y_proportion = (double)(fabs(h/m_originalHeight));
bool wxPolygonShape::GetAttachmentPosition(int attachment, double *x, double *y,
int nth, int no_arcs, wxLineShape *line)
{
- if (m_attachmentMode && m_points && attachment < m_points->Number())
+ if ((m_attachmentMode == ATTACHMENT_MODE_EDGE) && m_points && attachment < m_points->Number())
{
wxRealPoint *point = (wxRealPoint *)m_points->Nth(attachment)->Data();
*x = point->x + m_xpos;
if (m_shadowMode != SHADOW_NONE)
{
if (m_shadowBrush)
- dc.SetBrush(m_shadowBrush);
- dc.SetPen(g_oglTransparentPen);
+ dc.SetBrush(* m_shadowBrush);
+ dc.SetPen(* g_oglTransparentPen);
if (m_cornerRadius != 0.0)
dc.DrawRoundedRectangle(WXROUND(x1 + m_shadowOffsetX), WXROUND(y1 + m_shadowOffsetY),
if (m_pen)
{
if (m_pen->GetWidth() == 0)
- dc.SetPen(g_oglTransparentPen);
+ dc.SetPen(* g_oglTransparentPen);
else
- dc.SetPen(m_pen);
+ dc.SetPen(* m_pen);
}
if (m_brush)
- dc.SetBrush(m_brush);
+ dc.SetBrush(* m_brush);
if (m_cornerRadius != 0.0)
dc.DrawRoundedRectangle(WXROUND(x1), WXROUND(y1), WXROUND(m_width), WXROUND(m_height), m_cornerRadius);
bool wxRectangleShape::GetAttachmentPosition(int attachment, double *x, double *y,
int nth, int no_arcs, wxLineShape *line)
{
- if (m_attachmentMode)
- {
- double top = (double)(m_ypos + m_height/2.0);
- double bottom = (double)(m_ypos - m_height/2.0);
- double left = (double)(m_xpos - m_width/2.0);
- double right = (double)(m_xpos + m_width/2.0);
-
- bool isEnd = (line && line->IsEnd(this));
-
- // Simplified code
- switch (attachment)
- {
- case 0:
- {
- wxRealPoint pt = CalcSimpleAttachment(wxRealPoint(left, bottom), wxRealPoint(right, bottom),
- nth, no_arcs, line);
-
- *x = pt.x; *y = pt.y;
- break;
- }
- case 1:
- {
- wxRealPoint pt = CalcSimpleAttachment(wxRealPoint(right, bottom), wxRealPoint(right, top),
- nth, no_arcs, line);
-
- *x = pt.x; *y = pt.y;
- break;
- }
- case 2:
- {
- wxRealPoint pt = CalcSimpleAttachment(wxRealPoint(left, top), wxRealPoint(right, top),
- nth, no_arcs, line);
-
- *x = pt.x; *y = pt.y;
- break;
- }
- case 3:
- {
- wxRealPoint pt = CalcSimpleAttachment(wxRealPoint(left, bottom), wxRealPoint(left, top),
- nth, no_arcs, line);
-
- *x = pt.x; *y = pt.y;
- break;
- }
- default:
- {
- return wxShape::GetAttachmentPosition(attachment, x, y, nth, no_arcs, line);
- break;
- }
- }
-
- return TRUE;
- }
- else
- { *x = m_xpos; *y = m_ypos; return TRUE; }
+ return wxShape::GetAttachmentPosition(attachment, x, y, nth, no_arcs, line);
}
// Text object (no box)
if (m_shadowMode != SHADOW_NONE)
{
if (m_shadowBrush)
- dc.SetBrush(m_shadowBrush);
- dc.SetPen(g_oglTransparentPen);
- dc.DrawEllipse((m_xpos - GetWidth()/2) + m_shadowOffsetX,
- (m_ypos - GetHeight()/2) + m_shadowOffsetY,
- GetWidth(), GetHeight());
+ dc.SetBrush(* m_shadowBrush);
+ dc.SetPen(* g_oglTransparentPen);
+ dc.DrawEllipse((long) ((m_xpos - GetWidth()/2) + m_shadowOffsetX),
+ (long) ((m_ypos - GetHeight()/2) + m_shadowOffsetY),
+ (long) GetWidth(), (long) GetHeight());
}
if (m_pen)
{
if (m_pen->GetWidth() == 0)
- dc.SetPen(g_oglTransparentPen);
+ dc.SetPen(* g_oglTransparentPen);
else
- dc.SetPen(m_pen);
+ dc.SetPen(* m_pen);
}
if (m_brush)
- dc.SetBrush(m_brush);
- dc.DrawEllipse((m_xpos - GetWidth()/2), (m_ypos - GetHeight()/2), GetWidth(), GetHeight());
+ dc.SetBrush(* m_brush);
+ dc.DrawEllipse((long) (m_xpos - GetWidth()/2), (long) (m_ypos - GetHeight()/2), (long) GetWidth(), (long) GetHeight());
}
void wxEllipseShape::SetSize(double x, double y, bool recursive)
bool wxEllipseShape::GetAttachmentPosition(int attachment, double *x, double *y,
int nth, int no_arcs, wxLineShape *line)
{
- if (m_attachmentMode)
+ if (m_attachmentMode == ATTACHMENT_MODE_BRANCHING)
+ return wxShape::GetAttachmentPosition(attachment, x, y, nth, no_arcs, line);
+
+ if (m_attachmentMode != ATTACHMENT_MODE_NONE)
{
double top = (double)(m_ypos + m_height/2.0);
double bottom = (double)(m_ypos - m_height/2.0);
double left = (double)(m_xpos - m_width/2.0);
double right = (double)(m_xpos + m_width/2.0);
- switch (attachment)
+
+ int physicalAttachment = LogicalToPhysicalAttachment(attachment);
+
+ switch (physicalAttachment)
{
case 0:
{