new y position transforms in dc. Def updates and add imagexpm.cpp to make.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9860 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
631
src/os2/dc.cpp
631
src/os2/dc.cpp
@@ -34,6 +34,27 @@
|
|||||||
|
|
||||||
IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject)
|
IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject)
|
||||||
|
|
||||||
|
//
|
||||||
|
// wxWindows uses the Microsoft convention that the origin is the UPPER left.
|
||||||
|
// Native OS/2 however in the GPI and PM define the origin as the LOWER left.
|
||||||
|
// In order to map OS/2 GPI/PM y coordinates to wxWindows coordinates we must
|
||||||
|
// perform the following transformation:
|
||||||
|
//
|
||||||
|
// Parent object height: POBJHEIGHT
|
||||||
|
// Desried origin: WXORIGINY
|
||||||
|
// Object to place's height: OBJHEIGHT
|
||||||
|
//
|
||||||
|
// To get the OS2 position from the wxWindows one:
|
||||||
|
//
|
||||||
|
// OS2Y = POBJHEIGHT - (WXORIGINY + OBJHEIGHT)
|
||||||
|
//
|
||||||
|
// For OS/2 wxDC's we will always determine m_vRclPaint as the size of the
|
||||||
|
// OS/2 Presentation Space associated with the device context. y is the
|
||||||
|
// desired application's y coordinate of the origin in wxWindows space.
|
||||||
|
// objy is the height of the object we are going to draw.
|
||||||
|
//
|
||||||
|
#define OS2Y(y, objy) ((m_vRclPaint.yTop - m_vRclPaint.yBottom) - (y + objy))
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// constants
|
// constants
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
@@ -233,19 +254,20 @@ void wxDC::SelectOldObjects(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void wxDC::DoSetClippingRegion(
|
void wxDC::DoSetClippingRegion(
|
||||||
wxCoord x
|
wxCoord vX
|
||||||
, wxCoord y
|
, wxCoord vY
|
||||||
, wxCoord width
|
, wxCoord vWidth
|
||||||
, wxCoord height
|
, wxCoord vHeight
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
RECTL vRect;
|
RECTL vRect;
|
||||||
|
|
||||||
|
vY = OS2Y(vY,vHeight);
|
||||||
m_clipping = TRUE;
|
m_clipping = TRUE;
|
||||||
vRect.xLeft = XLOG2DEV(x);
|
vRect.xLeft = vX;
|
||||||
vRect.yTop = YLOG2DEV(m_vRclPaint.yTop - y);
|
vRect.yTop = vY + vHeight;
|
||||||
vRect.xRight = XLOG2DEV(x + width);
|
vRect.xRight = vX + vWidth;
|
||||||
vRect.yBottom = YLOG2DEV(m_vRclPaint.yTop - (y + height));
|
vRect.yBottom = vY;
|
||||||
::GpiIntersectClipRectangle(m_hPS, &vRect);
|
::GpiIntersectClipRectangle(m_hPS, &vRect);
|
||||||
DO_SET_CLIPPING_BOX()
|
DO_SET_CLIPPING_BOX()
|
||||||
} // end of wxDC::DoSetClippingRegion
|
} // end of wxDC::DoSetClippingRegion
|
||||||
@@ -328,7 +350,7 @@ int wxDC::GetDepth() const
|
|||||||
void wxDC::Clear()
|
void wxDC::Clear()
|
||||||
{
|
{
|
||||||
::GpiErase(m_hPS);
|
::GpiErase(m_hPS);
|
||||||
}
|
} // end of wxDC::Clear
|
||||||
|
|
||||||
void wxDC::DoFloodFill(
|
void wxDC::DoFloodFill(
|
||||||
wxCoord vX
|
wxCoord vX
|
||||||
@@ -342,7 +364,7 @@ void wxDC::DoFloodFill(
|
|||||||
LONG lOptions;
|
LONG lOptions;
|
||||||
|
|
||||||
vPtlPos.x = vX; // Loads x-coordinate
|
vPtlPos.x = vX; // Loads x-coordinate
|
||||||
vPtlPos.y = vY; // Loads y-coordinate
|
vPtlPos.y = OS2Y(vY,0); // Loads y-coordinate
|
||||||
::GpiMove(m_hPS, &vPtlPos); // Sets current position
|
::GpiMove(m_hPS, &vPtlPos); // Sets current position
|
||||||
lColor = rCol.GetPixel();
|
lColor = rCol.GetPixel();
|
||||||
lOptions = FF_BOUNDARY;
|
lOptions = FF_BOUNDARY;
|
||||||
@@ -350,7 +372,7 @@ void wxDC::DoFloodFill(
|
|||||||
lOptions = FF_SURFACE;
|
lOptions = FF_SURFACE;
|
||||||
|
|
||||||
::GpiFloodFill(m_hPS, lOptions, lColor);
|
::GpiFloodFill(m_hPS, lOptions, lColor);
|
||||||
}
|
} // end of wxDC::DoFloodFill
|
||||||
|
|
||||||
bool wxDC::DoGetPixel(
|
bool wxDC::DoGetPixel(
|
||||||
wxCoord vX
|
wxCoord vX
|
||||||
@@ -362,20 +384,37 @@ bool wxDC::DoGetPixel(
|
|||||||
LONG lColor;
|
LONG lColor;
|
||||||
|
|
||||||
vPoint.x = vX;
|
vPoint.x = vX;
|
||||||
vPoint.y = vY;
|
vPoint.y = OS2Y(vY,0);
|
||||||
lColor = ::GpiSetPel(m_hPS, &vPoint);
|
lColor = ::GpiSetPel(m_hPS, &vPoint);
|
||||||
pCol->Set((unsigned long)lColor);
|
|
||||||
if(lColor>= 0)
|
//
|
||||||
return(TRUE);
|
// Get the color of the pen
|
||||||
else
|
//
|
||||||
return(FALSE);
|
LONG lPencolor = 0x00ffffff;
|
||||||
|
|
||||||
|
if (m_pen.Ok())
|
||||||
|
{
|
||||||
|
lPencolor = m_pen.GetColour().GetPixel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// return the color of the pixel
|
||||||
|
//
|
||||||
|
if(pCol)
|
||||||
|
pCol->Set( GetRValue(lColor)
|
||||||
|
,GetGValue(lColor)
|
||||||
|
,GetBValue(lColor)
|
||||||
|
);
|
||||||
|
return(lColor == lPencolor);
|
||||||
|
} // end of wxDC::DoGetPixel
|
||||||
|
|
||||||
void wxDC::DoCrossHair(
|
void wxDC::DoCrossHair(
|
||||||
wxCoord vX
|
wxCoord vX
|
||||||
, wxCoord vY
|
, wxCoord vY
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
vY = OS2Y(vY,0);
|
||||||
|
|
||||||
wxCoord vX1 = vX - VIEWPORT_EXTENT;
|
wxCoord vX1 = vX - VIEWPORT_EXTENT;
|
||||||
wxCoord vY1 = vY - VIEWPORT_EXTENT;
|
wxCoord vY1 = vY - VIEWPORT_EXTENT;
|
||||||
wxCoord vX2 = vX + VIEWPORT_EXTENT;
|
wxCoord vX2 = vX + VIEWPORT_EXTENT;
|
||||||
@@ -383,22 +422,24 @@ void wxDC::DoCrossHair(
|
|||||||
POINTL vPoint[4];
|
POINTL vPoint[4];
|
||||||
|
|
||||||
vPoint[0].x = vX1;
|
vPoint[0].x = vX1;
|
||||||
vPoint[0].y = m_vRclPaint.yTop - vY;
|
vPoint[0].y = vY;
|
||||||
|
|
||||||
vPoint[1].x = vX2;
|
vPoint[1].x = vX2;
|
||||||
vPoint[1].y = m_vRclPaint.yTop - vY;
|
vPoint[1].y = vY;
|
||||||
|
|
||||||
::GpiMove(m_hPS, &vPoint[0]);
|
::GpiMove(m_hPS, &vPoint[0]);
|
||||||
::GpiLine(m_hPS, &vPoint[1]);
|
::GpiLine(m_hPS, &vPoint[1]);
|
||||||
|
|
||||||
vPoint[2].x = vX;
|
vPoint[2].x = vX;
|
||||||
vPoint[2].y = m_vRclPaint.yTop - vY1;
|
vPoint[2].y = vY1;
|
||||||
|
|
||||||
vPoint[3].x = vX;
|
vPoint[3].x = vX;
|
||||||
vPoint[3].y = m_vRclPaint.yTop - vY2;
|
vPoint[3].y = vY2;
|
||||||
|
|
||||||
::GpiMove(m_hPS, &vPoint[2]);
|
::GpiMove(m_hPS, &vPoint[2]);
|
||||||
::GpiLine(m_hPS, &vPoint[3]);
|
::GpiLine(m_hPS, &vPoint[3]);
|
||||||
|
CalcBoundingBox(vX1, vY1);
|
||||||
|
CalcBoundingBox(vX2, vY2);
|
||||||
} // end of wxDC::DoCrossHair
|
} // end of wxDC::DoCrossHair
|
||||||
|
|
||||||
void wxDC::DoDrawLine(
|
void wxDC::DoDrawLine(
|
||||||
@@ -410,12 +451,17 @@ void wxDC::DoDrawLine(
|
|||||||
{
|
{
|
||||||
POINTL vPoint[2];
|
POINTL vPoint[2];
|
||||||
|
|
||||||
|
vY1 = OS2Y(vY1,0);
|
||||||
|
vY2 = OS2Y(vY2,0);
|
||||||
|
|
||||||
vPoint[0].x = vX1;
|
vPoint[0].x = vX1;
|
||||||
vPoint[0].y = m_vRclPaint.yTop - vY1;
|
vPoint[0].y = vY1;
|
||||||
vPoint[1].x = vX2;
|
vPoint[1].x = vX2;
|
||||||
vPoint[1].y = m_vRclPaint.yTop - vY2;
|
vPoint[1].y = vY2;
|
||||||
::GpiMove(m_hPS, &vPoint[0]);
|
::GpiMove(m_hPS, &vPoint[0]);
|
||||||
::GpiLine(m_hPS, &vPoint[1]);
|
::GpiLine(m_hPS, &vPoint[1]);
|
||||||
|
CalcBoundingBox(vX1, vY1);
|
||||||
|
CalcBoundingBox(vX2, vY2);
|
||||||
} // end of wxDC::DoDrawLine
|
} // end of wxDC::DoDrawLine
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -510,6 +556,12 @@ void wxDC::DoDrawArc(
|
|||||||
vPtlArc[1].x = vX2;
|
vPtlArc[1].x = vX2;
|
||||||
vPtlArc[1].y = vY2;
|
vPtlArc[1].y = vY2;
|
||||||
::GpiPointArc(m_hPS, vPtlArc); // Draws the arc
|
::GpiPointArc(m_hPS, vPtlArc); // Draws the arc
|
||||||
|
CalcBoundingBox( (vXc - dRadius)
|
||||||
|
,(vYc - dRadius)
|
||||||
|
);
|
||||||
|
CalcBoundingBox( (vXc + dRadius)
|
||||||
|
,(vYc + dRadius)
|
||||||
|
);
|
||||||
} // end of wxDC::DoDrawArc
|
} // end of wxDC::DoDrawArc
|
||||||
|
|
||||||
void wxDC::DoDrawCheckMark(
|
void wxDC::DoDrawCheckMark(
|
||||||
@@ -521,6 +573,8 @@ void wxDC::DoDrawCheckMark(
|
|||||||
{
|
{
|
||||||
POINTL vPoint[2];
|
POINTL vPoint[2];
|
||||||
|
|
||||||
|
vY1 = OS2Y(vY1,vHeight);
|
||||||
|
|
||||||
vPoint[0].x = vX1;
|
vPoint[0].x = vX1;
|
||||||
vPoint[0].y = vY1;
|
vPoint[0].y = vY1;
|
||||||
vPoint[1].x = vX1 + vWidth;
|
vPoint[1].x = vX1 + vWidth;
|
||||||
@@ -547,6 +601,16 @@ void wxDC::DoDrawCheckMark(
|
|||||||
::GpiMove(m_hPS, &vPoint[0]);
|
::GpiMove(m_hPS, &vPoint[0]);
|
||||||
::GpiLine(m_hPS, &vPoint[1]);
|
::GpiLine(m_hPS, &vPoint[1]);
|
||||||
}
|
}
|
||||||
|
CalcBoundingBox( vX1
|
||||||
|
,vY1
|
||||||
|
);
|
||||||
|
|
||||||
|
wxCoord vX2 = vX1 + vWidth;
|
||||||
|
wxCoord vY2 = vY1 + vHeight;
|
||||||
|
|
||||||
|
CalcBoundingBox( vX2
|
||||||
|
,vY2
|
||||||
|
);
|
||||||
} // end of wxDC::DoDrawCheckMark
|
} // end of wxDC::DoDrawCheckMark
|
||||||
|
|
||||||
void wxDC::DoDrawPoint(
|
void wxDC::DoDrawPoint(
|
||||||
@@ -555,10 +619,19 @@ void wxDC::DoDrawPoint(
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
POINTL vPoint;
|
POINTL vPoint;
|
||||||
|
COLORREF vColor = 0x00ffffff;
|
||||||
|
|
||||||
|
if (m_pen.Ok())
|
||||||
|
{
|
||||||
|
vColor = m_pen.GetColour().GetPixel();
|
||||||
|
}
|
||||||
|
::GpiSetColor(m_hPS, vColor);
|
||||||
vPoint.x = vX;
|
vPoint.x = vX;
|
||||||
vPoint.y = m_vRclPaint.yTop - vY;
|
vPoint.y = OS2Y(vY,0);
|
||||||
::GpiSetPel(m_hPS, &vPoint);
|
::GpiSetPel(m_hPS, &vPoint);
|
||||||
|
CalcBoundingBox( vX
|
||||||
|
,vY
|
||||||
|
);
|
||||||
} // end of wxDC::DoDrawPoint
|
} // end of wxDC::DoDrawPoint
|
||||||
|
|
||||||
void wxDC::DoDrawPolygon(
|
void wxDC::DoDrawPolygon(
|
||||||
@@ -616,7 +689,7 @@ void wxDC::DoDrawPolygon(
|
|||||||
for(i = 0; i < n; i++)
|
for(i = 0; i < n; i++)
|
||||||
{
|
{
|
||||||
vPlgn.aPointl[i].x = vPoints[i].x; // +xoffset;
|
vPlgn.aPointl[i].x = vPoints[i].x; // +xoffset;
|
||||||
vPlgn.aPointl[i].y = vPoints[i].y; // +yoffset;
|
vPlgn.aPointl[i].y = OS2Y(vPoints[i].y,0); // +yoffset;
|
||||||
}
|
}
|
||||||
flModel = POLYGON_BOUNDARY;
|
flModel = POLYGON_BOUNDARY;
|
||||||
if(nFillStyle == wxWINDING_RULE)
|
if(nFillStyle == wxWINDING_RULE)
|
||||||
@@ -625,7 +698,7 @@ void wxDC::DoDrawPolygon(
|
|||||||
flModel |= POLYGON_ALTERNATE;
|
flModel |= POLYGON_ALTERNATE;
|
||||||
|
|
||||||
vPoint.x = vXoffset;
|
vPoint.x = vXoffset;
|
||||||
vPoint.y = vYoffset;
|
vPoint.y = OS2Y(vYoffset,0);
|
||||||
|
|
||||||
::GpiSetColor(m_hPS, lBorderColor);
|
::GpiSetColor(m_hPS, lBorderColor);
|
||||||
::GpiMove(m_hPS, &vPoint);
|
::GpiMove(m_hPS, &vPoint);
|
||||||
@@ -640,11 +713,14 @@ void wxDC::DoDrawLines(
|
|||||||
, wxCoord vYoffset
|
, wxCoord vYoffset
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
POINTL vPoint;
|
POINTL vPoint;
|
||||||
|
|
||||||
|
if (vXoffset != 0L || vXoffset != 0L)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
vPoint.x = vPoints[0].x + vXoffset;
|
vPoint.x = vPoints[0].x + vXoffset;
|
||||||
vPoint.y = vPoints[0].y + vYoffset;
|
vPoint.y = OS2Y(vPoints[0].y + vYoffset,0);
|
||||||
::GpiMove(m_hPS, &vPoint);
|
::GpiMove(m_hPS, &vPoint);
|
||||||
|
|
||||||
LONG lBorderColor = m_pen.GetColour().GetPixel();
|
LONG lBorderColor = m_pen.GetColour().GetPixel();
|
||||||
@@ -652,10 +728,32 @@ void wxDC::DoDrawLines(
|
|||||||
::GpiSetColor(m_hPS, lBorderColor);
|
::GpiSetColor(m_hPS, lBorderColor);
|
||||||
for(i = 1; i < n; i++)
|
for(i = 1; i < n; i++)
|
||||||
{
|
{
|
||||||
vPoint.x = vPoints[0].x + vXoffset;
|
vPoint.x = vPoints[i].x + vXoffset;
|
||||||
vPoint.y = vPoints[0].y + vYoffset;
|
vPoint.y = OS2Y(vPoints[i].y + vYoffset,0);
|
||||||
::GpiLine(m_hPS, &vPoint);
|
::GpiLine(m_hPS, &vPoint);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
CalcBoundingBox( vPoints[i].x
|
||||||
|
,vPoints[i].y
|
||||||
|
);
|
||||||
|
vPoint.x = vPoints[0].x;
|
||||||
|
vPoint.y = OS2Y(vPoints[0].y,0);
|
||||||
|
::GpiMove(m_hPS, &vPoint);
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
{
|
||||||
|
CalcBoundingBox( vPoints[i].x
|
||||||
|
,vPoints[i].y
|
||||||
|
);
|
||||||
|
vPoint.x = vPoints[i].x;
|
||||||
|
vPoint.y = OS2Y(vPoints[i].y,0);
|
||||||
|
::GpiLine(m_hPS, &vPoint);
|
||||||
|
}
|
||||||
|
}
|
||||||
} // end of wxDC::DoDrawLines
|
} // end of wxDC::DoDrawLines
|
||||||
|
|
||||||
void wxDC::DoDrawRectangle(
|
void wxDC::DoDrawRectangle(
|
||||||
@@ -671,10 +769,15 @@ void wxDC::DoDrawRectangle(
|
|||||||
LONG lBorderColor;
|
LONG lBorderColor;
|
||||||
int nIsTRANSPARENT = 0;
|
int nIsTRANSPARENT = 0;
|
||||||
|
|
||||||
|
vY = OS2Y(vY,vHeight);
|
||||||
|
|
||||||
|
wxCoord vX2 = vX + vWidth;
|
||||||
|
wxCoord vY2 = vY + vHeight;
|
||||||
|
|
||||||
vPoint[0].x = vX;
|
vPoint[0].x = vX;
|
||||||
vPoint[0].y = m_vRclPaint.yTop - (vY + vHeight);
|
vPoint[0].y = vY;
|
||||||
vPoint[1].x = vX + vWidth;
|
vPoint[1].x = vX + vWidth;
|
||||||
vPoint[1].y = m_vRclPaint.yTop - vY;
|
vPoint[1].y = vY + vHeight;
|
||||||
::GpiMove(m_hPS, &vPoint[0]);
|
::GpiMove(m_hPS, &vPoint[0]);
|
||||||
lColor = m_brush.GetColour().GetPixel();
|
lColor = m_brush.GetColour().GetPixel();
|
||||||
lBorderColor = m_pen.GetColour().GetPixel();
|
lBorderColor = m_pen.GetColour().GetPixel();
|
||||||
@@ -711,9 +814,9 @@ void wxDC::DoDrawRectangle(
|
|||||||
,lColor
|
,lColor
|
||||||
);
|
);
|
||||||
vPoint[0].x = vX + 1;
|
vPoint[0].x = vX + 1;
|
||||||
vPoint[0].y = m_vRclPaint.yTop - (vY + vHeight) + 1;
|
vPoint[0].y = vY + 1;
|
||||||
vPoint[1].x = vX + vWidth - 2;
|
vPoint[1].x = vX + vWidth - 2;
|
||||||
vPoint[1].y = m_vRclPaint.yTop - (vY + 2);
|
vPoint[1].y = vY + vHeight + 2;
|
||||||
::GpiMove(m_hPS, &vPoint[0]);
|
::GpiMove(m_hPS, &vPoint[0]);
|
||||||
::GpiBox( m_hPS
|
::GpiBox( m_hPS
|
||||||
,lControl
|
,lControl
|
||||||
@@ -722,6 +825,8 @@ void wxDC::DoDrawRectangle(
|
|||||||
,0L
|
,0L
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
CalcBoundingBox(vX, vY);
|
||||||
|
CalcBoundingBox(vX2, vY2);
|
||||||
} // end of wxDC::DoDrawRectangle
|
} // end of wxDC::DoDrawRectangle
|
||||||
|
|
||||||
void wxDC::DoDrawRoundedRectangle(
|
void wxDC::DoDrawRoundedRectangle(
|
||||||
@@ -735,6 +840,11 @@ void wxDC::DoDrawRoundedRectangle(
|
|||||||
POINTL vPoint[2];
|
POINTL vPoint[2];
|
||||||
LONG lControl;
|
LONG lControl;
|
||||||
|
|
||||||
|
vY = OS2Y(vY,vHeight);
|
||||||
|
|
||||||
|
wxCoord vX2 = (vX + vWidth);
|
||||||
|
wxCoord vY2 = (vY + vHeight);
|
||||||
|
|
||||||
vPoint[0].x = vX;
|
vPoint[0].x = vX;
|
||||||
vPoint[0].y = YLOG2DEV(vY) - vHeight;
|
vPoint[0].y = YLOG2DEV(vY) - vHeight;
|
||||||
vPoint[1].x = vX + vWidth;
|
vPoint[1].x = vX + vWidth;
|
||||||
@@ -750,6 +860,8 @@ void wxDC::DoDrawRoundedRectangle(
|
|||||||
,(LONG)dRadius // horizontal corner radius
|
,(LONG)dRadius // horizontal corner radius
|
||||||
,(LONG)dRadius // vertical corner radius
|
,(LONG)dRadius // vertical corner radius
|
||||||
);
|
);
|
||||||
|
CalcBoundingBox(vX, vY);
|
||||||
|
CalcBoundingBox(vX2, vY2);
|
||||||
} // end of wxDC::DoDrawRoundedRectangle
|
} // end of wxDC::DoDrawRoundedRectangle
|
||||||
|
|
||||||
// Draw Ellipse within box (x,y) - (x+width, y+height)
|
// Draw Ellipse within box (x,y) - (x+width, y+height)
|
||||||
@@ -764,6 +876,8 @@ void wxDC::DoDrawEllipse(
|
|||||||
FIXED vFxMult; // Multiplier for ellipse
|
FIXED vFxMult; // Multiplier for ellipse
|
||||||
ARCPARAMS vArcp; // Structure for arc parameters
|
ARCPARAMS vArcp; // Structure for arc parameters
|
||||||
|
|
||||||
|
vY = OS2Y(vY,vHeight);
|
||||||
|
|
||||||
vArcp.lR = 0;
|
vArcp.lR = 0;
|
||||||
vArcp.lQ = vHeight/2;
|
vArcp.lQ = vHeight/2;
|
||||||
vArcp.lP = vWidth/2;
|
vArcp.lP = vWidth/2;
|
||||||
@@ -785,6 +899,12 @@ void wxDC::DoDrawEllipse(
|
|||||||
,DRO_OUTLINE
|
,DRO_OUTLINE
|
||||||
,vFxMult
|
,vFxMult
|
||||||
); // Draws full arc with center at current position
|
); // Draws full arc with center at current position
|
||||||
|
|
||||||
|
wxCoord vX2 = (vX + vWidth);
|
||||||
|
wxCoord vY2 = (vY + vHeight);
|
||||||
|
|
||||||
|
CalcBoundingBox(vX, vY);
|
||||||
|
CalcBoundingBox(vX2, vY2);
|
||||||
} // end of wxDC::DoDrawEllipse
|
} // end of wxDC::DoDrawEllipse
|
||||||
|
|
||||||
void wxDC::DoDrawEllipticArc(
|
void wxDC::DoDrawEllipticArc(
|
||||||
@@ -805,6 +925,8 @@ void wxDC::DoDrawEllipticArc(
|
|||||||
double dFractPart;
|
double dFractPart;
|
||||||
double dRadius;
|
double dRadius;
|
||||||
|
|
||||||
|
vY = OS2Y(vY,vHeight);
|
||||||
|
|
||||||
dFractPart = modf(dSa,&dIntPart);
|
dFractPart = modf(dSa,&dIntPart);
|
||||||
vFSa = MAKEFIXED((int)dIntPart, (int)(dFractPart * 0xffff) );
|
vFSa = MAKEFIXED((int)dIntPart, (int)(dFractPart * 0xffff) );
|
||||||
dFractPart = modf(dEa - dSa, &dIntPart);
|
dFractPart = modf(dEa - dSa, &dIntPart);
|
||||||
@@ -838,6 +960,11 @@ void wxDC::DoDrawEllipticArc(
|
|||||||
,vFSa
|
,vFSa
|
||||||
,vFSweepa
|
,vFSweepa
|
||||||
);
|
);
|
||||||
|
wxCoord vX2 = (vX + vWidth);
|
||||||
|
wxCoord vY2 = (vY + vHeight);
|
||||||
|
|
||||||
|
CalcBoundingBox(vX, vY);
|
||||||
|
CalcBoundingBox(vX2, vY2);
|
||||||
} // end of wxDC::DoDrawEllipticArc
|
} // end of wxDC::DoDrawEllipticArc
|
||||||
|
|
||||||
void wxDC::DoDrawIcon(
|
void wxDC::DoDrawIcon(
|
||||||
@@ -846,6 +973,7 @@ void wxDC::DoDrawIcon(
|
|||||||
, wxCoord vY
|
, wxCoord vY
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
vY = OS2Y(vY,rIcon.GetHeight());
|
||||||
wxCHECK_RET( rIcon.Ok(), wxT("invalid icon in DrawIcon") );
|
wxCHECK_RET( rIcon.Ok(), wxT("invalid icon in DrawIcon") );
|
||||||
|
|
||||||
::WinDrawPointer( GetHPS()
|
::WinDrawPointer( GetHPS()
|
||||||
@@ -854,6 +982,8 @@ void wxDC::DoDrawIcon(
|
|||||||
,(HPOINTER)GetHiconOf(rIcon)
|
,(HPOINTER)GetHiconOf(rIcon)
|
||||||
,DP_NORMAL
|
,DP_NORMAL
|
||||||
);
|
);
|
||||||
|
CalcBoundingBox(vX, vY);
|
||||||
|
CalcBoundingBox(vX + rIcon.GetWidth(), vY + rIcon.GetHeight());
|
||||||
} // end of wxDC::DoDrawIcon
|
} // end of wxDC::DoDrawIcon
|
||||||
|
|
||||||
void wxDC::DoDrawBitmap(
|
void wxDC::DoDrawBitmap(
|
||||||
@@ -881,11 +1011,18 @@ void wxDC::DoDrawText(
|
|||||||
, wxCoord vY
|
, wxCoord vY
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
wxCoord vWidth;
|
||||||
|
wxCoord vHeight;
|
||||||
|
|
||||||
DrawAnyText( rsText
|
DrawAnyText( rsText
|
||||||
,vX
|
,vX
|
||||||
,vY
|
,vY
|
||||||
);
|
);
|
||||||
}
|
|
||||||
|
CalcBoundingBox(vX, vY);
|
||||||
|
GetTextExtent(rsText, &vWidth, &vHeight);
|
||||||
|
CalcBoundingBox((vX + vWidth), (vY + vHeight));
|
||||||
|
} // end of wxDC::DoDrawText
|
||||||
|
|
||||||
void wxDC::DrawAnyText(
|
void wxDC::DrawAnyText(
|
||||||
const wxString& rsText
|
const wxString& rsText
|
||||||
@@ -896,6 +1033,8 @@ void wxDC::DrawAnyText(
|
|||||||
int nOldBackground = 0;
|
int nOldBackground = 0;
|
||||||
POINTL vPtlStart;
|
POINTL vPtlStart;
|
||||||
LONG lHits;
|
LONG lHits;
|
||||||
|
wxCoord vTextX = 0;
|
||||||
|
wxCoord vTextY = 0;
|
||||||
|
|
||||||
//
|
//
|
||||||
// prepare for drawing the text
|
// prepare for drawing the text
|
||||||
@@ -920,8 +1059,12 @@ void wxDC::DrawAnyText(
|
|||||||
SetBkMode( m_hPS
|
SetBkMode( m_hPS
|
||||||
,m_backgroundMode
|
,m_backgroundMode
|
||||||
);
|
);
|
||||||
|
GetTextExtent( rsText
|
||||||
|
,&vTextX
|
||||||
|
,&vTextY
|
||||||
|
);
|
||||||
vPtlStart.x = vX;
|
vPtlStart.x = vX;
|
||||||
vPtlStart.y = vY;
|
vPtlStart.y = OS2Y(vY,vTextY);
|
||||||
|
|
||||||
lHits = ::GpiCharStringAt( m_hPS
|
lHits = ::GpiCharStringAt( m_hPS
|
||||||
,&vPtlStart
|
,&vPtlStart
|
||||||
@@ -1018,10 +1161,26 @@ void wxDC::DoDrawRotatedText(
|
|||||||
// set GDI objects
|
// set GDI objects
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
void wxDC::SetPalette(const wxPalette& palette)
|
void wxDC::SetPalette(
|
||||||
|
const wxPalette& rPalette
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// TODO
|
if (m_hOldFont)
|
||||||
|
{
|
||||||
|
m_hOldFont = 0;
|
||||||
}
|
}
|
||||||
|
m_palette = rPalette;
|
||||||
|
if (!rPalette.Ok())
|
||||||
|
{
|
||||||
|
if (m_hOldFont)
|
||||||
|
{
|
||||||
|
m_hOldFont = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
HPALETTE hOldPal = ::GpiSelectPalette((HDC) m_hPS, (HPALETTE) m_palette.GetHPALETTE());
|
||||||
|
if (!m_hOldPalette)
|
||||||
|
m_hOldPalette = (WXHPALETTE)hOldPal;
|
||||||
|
} // end of wxDC::SetPalette
|
||||||
|
|
||||||
void wxDC::SetFont(
|
void wxDC::SetFont(
|
||||||
const wxFont& rFont
|
const wxFont& rFont
|
||||||
@@ -1097,15 +1256,15 @@ void wxDC::SetBrush(
|
|||||||
{
|
{
|
||||||
wxCHECK_RET( Ok(), wxT("invalid window dc") );
|
wxCHECK_RET( Ok(), wxT("invalid window dc") );
|
||||||
|
|
||||||
if (m_brush == rBrush)
|
|
||||||
return;
|
|
||||||
m_brush = rBrush;
|
|
||||||
if (!m_brush.Ok())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (m_hOldBrush)
|
if (m_hOldBrush)
|
||||||
m_hOldBrush = 0L;
|
m_hOldBrush = 0L;
|
||||||
m_brush = rBrush;
|
m_brush = rBrush;
|
||||||
|
if (!m_brush.Ok())
|
||||||
|
if (m_brush == rBrush)
|
||||||
|
return;
|
||||||
|
if (!m_brush.Ok())
|
||||||
|
if (m_hOldBrush)
|
||||||
|
m_hOldBrush = 0L;
|
||||||
|
|
||||||
if (!m_brush.Ok())
|
if (!m_brush.Ok())
|
||||||
{
|
{
|
||||||
@@ -1122,77 +1281,153 @@ void wxDC::SetBrush(
|
|||||||
{
|
{
|
||||||
m_brush.SetPS(m_hPS);
|
m_brush.SetPS(m_hPS);
|
||||||
if (!m_hOldBrush)
|
if (!m_hOldBrush)
|
||||||
m_hOldBrush = m_brush.GetPS();
|
m_hOldBrush = (WXHWND)m_brush.GetPS();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // end of wxDC::SetBrush
|
} // end of wxDC::SetBrush
|
||||||
|
|
||||||
void wxDC::SetBackground(const wxBrush& brush)
|
void wxDC::SetBackground(
|
||||||
|
const wxBrush& rBrush
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// TODO
|
m_backgroundBrush = rBrush;
|
||||||
|
if (!m_backgroundBrush.Ok())
|
||||||
|
return;
|
||||||
|
if (m_pCanvas)
|
||||||
|
{
|
||||||
|
bool bCustomColours = TRUE;
|
||||||
|
|
||||||
|
//
|
||||||
|
// If we haven't specified wxUSER_COLOURS, don't allow the panel/dialog box to
|
||||||
|
// change background colours from the control-panel specified colours.
|
||||||
|
//
|
||||||
|
if (m_pCanvas->IsKindOf(CLASSINFO(wxWindow)) &&
|
||||||
|
((m_pCanvas->GetWindowStyleFlag() & wxUSER_COLOURS) != wxUSER_COLOURS))
|
||||||
|
bCustomColours = FALSE;
|
||||||
|
if (bCustomColours)
|
||||||
|
{
|
||||||
|
if (m_backgroundBrush.GetStyle()==wxTRANSPARENT)
|
||||||
|
{
|
||||||
|
m_pCanvas->SetTransparent(TRUE);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Setting the background brush of a DC
|
||||||
|
// doesn't affect the window background colour. However,
|
||||||
|
// I'm leaving in the transparency setting because it's needed by
|
||||||
|
// various controls (e.g. wxStaticText) to determine whether to draw
|
||||||
|
// transparently or not. TODO: maybe this should be a new function
|
||||||
|
// wxWindow::SetTransparency(). Should that apply to the child itself, or the
|
||||||
|
// parent?
|
||||||
|
// m_canvas->SetBackgroundColour(m_backgroundBrush.GetColour());
|
||||||
|
//
|
||||||
|
m_pCanvas->SetTransparent(FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
COLORREF vNewColor = m_backgroundBrush.GetColour().GetPixel();
|
||||||
|
(void)::GpiSetBackColor((HPS)m_hPS, (LONG)vNewColor);
|
||||||
|
} // end of wxDC::SetBackground
|
||||||
|
|
||||||
void wxDC::SetBackgroundMode(
|
void wxDC::SetBackgroundMode(
|
||||||
int nMode
|
int nMode
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
m_backgroundMode = nMode;
|
m_backgroundMode = nMode;
|
||||||
}
|
} // end of wxDC::SetBackgroundMode
|
||||||
|
|
||||||
void wxDC::SetLogicalFunction(int function)
|
void wxDC::SetLogicalFunction(
|
||||||
|
int nFunction
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// TODO
|
m_logicalFunction = nFunction;
|
||||||
}
|
SetRop((WXHDC)m_hDC);
|
||||||
|
} // wxDC::SetLogicalFunction
|
||||||
|
|
||||||
void wxDC::SetRop(WXHDC dc)
|
void wxDC::SetRop(
|
||||||
|
WXHDC hDC
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (!dc || m_logicalFunction < 0)
|
if (!hDC || m_logicalFunction < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int c_rop;
|
LONG lCRop;
|
||||||
// These may be wrong
|
|
||||||
switch (m_logicalFunction)
|
switch (m_logicalFunction)
|
||||||
{
|
{
|
||||||
// TODO: Figure this stuff out
|
case wxXOR:
|
||||||
// case wxXOR: c_rop = R2_XORPEN; break;
|
lCRop = FM_XOR;
|
||||||
// case wxXOR: c_rop = R2_NOTXORPEN; break;
|
break;
|
||||||
// case wxINVERT: c_rop = R2_NOT; break;
|
|
||||||
// case wxOR_REVERSE: c_rop = R2_MERGEPENNOT; break;
|
case wxINVERT:
|
||||||
// case wxAND_REVERSE: c_rop = R2_MASKPENNOT; break;
|
lCRop = FM_INVERT;
|
||||||
// case wxCLEAR: c_rop = R2_WHITE; break;
|
break;
|
||||||
// case wxSET: c_rop = R2_BLACK; break;
|
|
||||||
// case wxSRC_INVERT: c_rop = R2_NOTCOPYPEN; break;
|
case wxOR_REVERSE:
|
||||||
// case wxOR_INVERT: c_rop = R2_MERGENOTPEN; break;
|
lCRop = FM_MERGESRCNOT;
|
||||||
// case wxAND: c_rop = R2_MASKPEN; break;
|
break;
|
||||||
// case wxOR: c_rop = R2_MERGEPEN; break;
|
|
||||||
// case wxAND_INVERT: c_rop = R2_MASKNOTPEN; break;
|
case wxAND_REVERSE:
|
||||||
// case wxEQUIV:
|
lCRop = FM_NOTMASKSRC;
|
||||||
// case wxNAND:
|
break;
|
||||||
// case wxCOPY:
|
|
||||||
|
case wxCLEAR:
|
||||||
|
lCRop = FM_ONE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxSET:
|
||||||
|
lCRop = FM_ZERO;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxSRC_INVERT:
|
||||||
|
lCRop = FM_MERGENOTSRC;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxOR_INVERT:
|
||||||
|
lCRop = FM_MERGESRCNOT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxAND:
|
||||||
|
lCRop = FM_AND;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxOR:
|
||||||
|
lCRop = FM_OR;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxAND_INVERT:
|
||||||
|
lCRop = FM_SUBTRACT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxEQUIV:
|
||||||
|
case wxNAND:
|
||||||
|
case wxCOPY:
|
||||||
default:
|
default:
|
||||||
// c_rop = R2_COPYPEN;
|
lCRop = FM_OVERPAINT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// SetROP2((HDC) dc, c_rop);
|
::GpiSetMix((HPS)hDC, lCRop);
|
||||||
}
|
} // end of wxDC::SetRop
|
||||||
|
|
||||||
bool wxDC::StartDoc(const wxString& message)
|
bool wxDC::StartDoc(
|
||||||
|
const wxString& rsMessage
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// We might be previewing, so return TRUE to let it continue.
|
// We might be previewing, so return TRUE to let it continue.
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
} // end of wxDC::StartDoc
|
||||||
|
|
||||||
void wxDC::EndDoc()
|
void wxDC::EndDoc()
|
||||||
{
|
{
|
||||||
}
|
} // end of wxDC::EndDoc
|
||||||
|
|
||||||
void wxDC::StartPage()
|
void wxDC::StartPage()
|
||||||
{
|
{
|
||||||
}
|
} // end of wxDC::StartPage
|
||||||
|
|
||||||
void wxDC::EndPage()
|
void wxDC::EndPage()
|
||||||
{
|
{
|
||||||
}
|
} // end of wxDC::EndPage
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// text metrics
|
// text metrics
|
||||||
@@ -1295,60 +1530,156 @@ void wxDC::DoGetTextExtent(
|
|||||||
*pvExternalLeading = vFM.lExternalLeading;
|
*pvExternalLeading = vFM.lExternalLeading;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxDC::SetMapMode( int mode )
|
void wxDC::SetMapMode(
|
||||||
|
int nMode
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// TODO:
|
int nPixelWidth = 0;
|
||||||
};
|
int nPixelHeight = 0;
|
||||||
|
int nMmWidth = 1;
|
||||||
|
int nMmHeight = 1;
|
||||||
|
LONG lArray[CAPS_VERTICAL_RESOLUTION];
|
||||||
|
|
||||||
void wxDC::SetUserScale(double x, double y)
|
m_mappingMode = nMode;
|
||||||
|
|
||||||
|
if(::DevQueryCaps( m_hDC
|
||||||
|
,CAPS_FAMILY
|
||||||
|
,CAPS_VERTICAL_RESOLUTION
|
||||||
|
,lArray
|
||||||
|
))
|
||||||
{
|
{
|
||||||
m_userScaleX = x;
|
LONG lHorzRes;
|
||||||
m_userScaleY = y;
|
LONG lVertRes;
|
||||||
|
|
||||||
SetMapMode(m_mappingMode);
|
nPixelWidth = lArray[CAPS_WIDTH];
|
||||||
|
nPixelHeight = lArray[CAPS_HEIGHT];
|
||||||
|
lHorzRes = lArray[CAPS_HORIZONTAL_RESOLUTION]; // returns pel/meter
|
||||||
|
lVertRes = lArray[CAPS_VERTICAL_RESOLUTION]; // returns pel/meter
|
||||||
|
nMmWidth = (lHorzRes/1000) * nPixelWidth;
|
||||||
|
nMmWidth = (lVertRes/1000) * nPixelHeight;
|
||||||
|
}
|
||||||
|
if ((nPixelWidth == 0) || (nPixelHeight == 0) || (nMmWidth == 0) || (nMmHeight == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxDC::SetAxisOrientation(bool xLeftRight, bool yBottomUp)
|
double dMm2pixelsX = nPixelWidth/nMmWidth;
|
||||||
|
double dMm2pixelsY = nPixelHeight/nMmHeight;
|
||||||
|
|
||||||
|
switch (nMode)
|
||||||
{
|
{
|
||||||
m_signX = xLeftRight ? 1 : -1;
|
case wxMM_TWIPS:
|
||||||
m_signY = yBottomUp ? -1 : 1;
|
m_logicalScaleX = (twips2mm * dMm2pixelsX);
|
||||||
|
m_logicalScaleY = (twips2mm * dMm2pixelsY);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxMM_POINTS:
|
||||||
|
m_logicalScaleX = (pt2mm * dMm2pixelsX);
|
||||||
|
m_logicalScaleY = (pt2mm * dMm2pixelsY);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxMM_METRIC:
|
||||||
|
m_logicalScaleX = dMm2pixelsX;
|
||||||
|
m_logicalScaleY = dMm2pixelsY;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxMM_LOMETRIC:
|
||||||
|
m_logicalScaleX = (dMm2pixelsX/10.0);
|
||||||
|
m_logicalScaleY = (dMm2pixelsY/10.0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case wxMM_TEXT:
|
||||||
|
default:
|
||||||
|
m_logicalScaleX = 1.0;
|
||||||
|
m_logicalScaleY = 1.0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
SIZEL vSize;
|
||||||
|
ULONG ulOptions;
|
||||||
|
|
||||||
|
ulOptions = ::GpiQueryPS(m_hPS, &vSize);
|
||||||
|
if (!ulOptions & PU_ARBITRARY)
|
||||||
|
{
|
||||||
|
ulOptions = PU_ARBITRARY | GPIF_DEFAULT;
|
||||||
|
::GpiSetPS(m_hPS, &vSize, ulOptions);
|
||||||
|
}
|
||||||
|
m_nWindowExtX = (int)MS_XDEV2LOGREL(VIEWPORT_EXTENT);
|
||||||
|
m_nWindowExtY = (int)MS_YDEV2LOGREL(VIEWPORT_EXTENT);
|
||||||
|
// ????
|
||||||
|
}; // end of wxDC::SetMapMode
|
||||||
|
|
||||||
|
void wxDC::SetUserScale(
|
||||||
|
double dX
|
||||||
|
, double dY
|
||||||
|
)
|
||||||
|
{
|
||||||
|
m_userScaleX = dX;
|
||||||
|
m_userScaleY = dY;
|
||||||
|
|
||||||
SetMapMode(m_mappingMode);
|
SetMapMode(m_mappingMode);
|
||||||
}
|
} // end of wxDC::SetUserScale
|
||||||
|
|
||||||
void wxDC::SetSystemScale(double x, double y)
|
void wxDC::SetAxisOrientation(
|
||||||
|
bool bXLeftRight
|
||||||
|
, bool bYBottomUp
|
||||||
|
)
|
||||||
{
|
{
|
||||||
m_scaleX = x;
|
m_signX = bXLeftRight ? 1 : -1;
|
||||||
m_scaleY = y;
|
m_signY = bYBottomUp ? -1 : 1;
|
||||||
|
|
||||||
SetMapMode(m_mappingMode);
|
SetMapMode(m_mappingMode);
|
||||||
}
|
} // end of wxDC::SetAxisOrientation
|
||||||
|
|
||||||
void wxDC::SetLogicalOrigin( wxCoord x, wxCoord y )
|
void wxDC::SetSystemScale(
|
||||||
|
double dX
|
||||||
|
, double dY
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// TODO:
|
m_scaleX = dX;
|
||||||
};
|
m_scaleY = dY;
|
||||||
|
|
||||||
void wxDC::SetDeviceOrigin(
|
SetMapMode(m_mappingMode);
|
||||||
wxCoord x
|
} // end of wxDC::SetSystemScale
|
||||||
, wxCoord y
|
|
||||||
|
void wxDC::SetLogicalOrigin(
|
||||||
|
wxCoord vX
|
||||||
|
, wxCoord vY
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
RECTL vRect;
|
RECTL vRect;
|
||||||
|
|
||||||
m_deviceOriginX = x;
|
|
||||||
m_deviceOriginY = y;
|
|
||||||
::GpiQueryPageViewport( m_hPS
|
::GpiQueryPageViewport( m_hPS
|
||||||
,&vRect
|
,&vRect
|
||||||
);
|
);
|
||||||
vRect.xLeft += x;
|
vRect.xRight -= vX;
|
||||||
vRect.xRight += x;
|
vRect.yTop += vY;
|
||||||
vRect.yBottom -= y;
|
vRect.xLeft = vX;
|
||||||
vRect.yTop -= y;
|
vRect.yBottom = vY;
|
||||||
::GpiSetPageViewport( m_hPS
|
::GpiSetPageViewport( m_hPS
|
||||||
,&vRect
|
,&vRect
|
||||||
);
|
);
|
||||||
};
|
}; // end of wxDC::SetLogicalOrigin
|
||||||
|
|
||||||
|
void wxDC::SetDeviceOrigin(
|
||||||
|
wxCoord vX
|
||||||
|
, wxCoord vY
|
||||||
|
)
|
||||||
|
{
|
||||||
|
RECTL vRect;
|
||||||
|
|
||||||
|
m_deviceOriginX = vX;
|
||||||
|
m_deviceOriginY = vY;
|
||||||
|
::GpiQueryPageViewport( m_hPS
|
||||||
|
,&vRect
|
||||||
|
);
|
||||||
|
vRect.xLeft += vX;
|
||||||
|
vRect.xRight += vX;
|
||||||
|
vRect.yBottom -= vY;
|
||||||
|
vRect.yTop -= vY;
|
||||||
|
::GpiSetPageViewport( m_hPS
|
||||||
|
,&vRect
|
||||||
|
);
|
||||||
|
}; // end of wxDC::SetDeviceOrigin
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// coordinates transformations
|
// coordinates transformations
|
||||||
@@ -1662,28 +1993,86 @@ bool wxDC::DoBlit(
|
|||||||
return bSuccess;
|
return bSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxDC::DoGetSize( int* width, int* height ) const
|
void wxDC::DoGetSize(
|
||||||
|
int* pnWidth
|
||||||
|
, int* pnHeight
|
||||||
|
) const
|
||||||
{
|
{
|
||||||
// TODO:
|
LONG lArray[CAPS_HEIGHT];
|
||||||
};
|
|
||||||
|
|
||||||
void wxDC::DoGetSizeMM( int* width, int* height ) const
|
if(::DevQueryCaps( m_hDC
|
||||||
|
,CAPS_FAMILY
|
||||||
|
,CAPS_HEIGHT
|
||||||
|
,lArray
|
||||||
|
))
|
||||||
{
|
{
|
||||||
// TODO:
|
*pnWidth = lArray[CAPS_WIDTH];
|
||||||
};
|
*pnHeight = lArray[CAPS_HEIGHT];
|
||||||
|
}
|
||||||
|
}; // end of wxDC::DoGetSize(
|
||||||
|
|
||||||
|
void wxDC::DoGetSizeMM(
|
||||||
|
int* pnWidth
|
||||||
|
, int* pnHeight
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
LONG lArray[CAPS_VERTICAL_RESOLUTION];
|
||||||
|
|
||||||
|
if(::DevQueryCaps( m_hDC
|
||||||
|
,CAPS_FAMILY
|
||||||
|
,CAPS_VERTICAL_RESOLUTION
|
||||||
|
,lArray
|
||||||
|
))
|
||||||
|
{
|
||||||
|
int nWidth;
|
||||||
|
int nHeight;
|
||||||
|
int nHorzRes;
|
||||||
|
int nVertRes;
|
||||||
|
|
||||||
|
nWidth = lArray[CAPS_WIDTH];
|
||||||
|
nHeight = lArray[CAPS_HEIGHT];
|
||||||
|
nHorzRes = lArray[CAPS_HORIZONTAL_RESOLUTION]; // returns pel/meter
|
||||||
|
nVertRes = lArray[CAPS_VERTICAL_RESOLUTION]; // returns pel/meter
|
||||||
|
nWidth = (nHorzRes/1000) * nWidth;
|
||||||
|
nHeight = (nVertRes/1000) * nHeight;
|
||||||
|
}
|
||||||
|
}; // end of wxDC::DoGetSizeMM
|
||||||
|
|
||||||
wxSize wxDC::GetPPI() const
|
wxSize wxDC::GetPPI() const
|
||||||
{
|
{
|
||||||
int x = 1;
|
LONG lArray[CAPS_VERTICAL_RESOLUTION];
|
||||||
int y = 1;
|
int nWidth;
|
||||||
// TODO:
|
int nHeight;
|
||||||
return (wxSize(x,y));
|
|
||||||
}
|
|
||||||
|
|
||||||
void wxDC::SetLogicalScale( double x, double y )
|
if(::DevQueryCaps( m_hDC
|
||||||
|
,CAPS_FAMILY
|
||||||
|
,CAPS_VERTICAL_RESOLUTION
|
||||||
|
,lArray
|
||||||
|
))
|
||||||
{
|
{
|
||||||
// TODO:
|
int nPelWidth;
|
||||||
};
|
int nPelHeight;
|
||||||
|
int nHorzRes;
|
||||||
|
int nVertRes;
|
||||||
|
|
||||||
|
nPelWidth = lArray[CAPS_WIDTH];
|
||||||
|
nPelHeight = lArray[CAPS_HEIGHT];
|
||||||
|
nHorzRes = lArray[CAPS_HORIZONTAL_RESOLUTION]; // returns pel/meter
|
||||||
|
nVertRes = lArray[CAPS_VERTICAL_RESOLUTION]; // returns pel/meter
|
||||||
|
nWidth = (nHorzRes/39.3) * nPelWidth;
|
||||||
|
nHeight = (nVertRes/39.3) * nPelHeight;
|
||||||
|
}
|
||||||
|
return (wxSize(nWidth,nHeight));
|
||||||
|
} // end of wxDC::GetPPI
|
||||||
|
|
||||||
|
void wxDC::SetLogicalScale(
|
||||||
|
double dX
|
||||||
|
, double dY
|
||||||
|
)
|
||||||
|
{
|
||||||
|
m_logicalScaleX = dX;
|
||||||
|
m_logicalScaleY = dY;
|
||||||
|
}; // end of wxDC::SetLogicalScale
|
||||||
|
|
||||||
#if WXWIN_COMPATIBILITY
|
#if WXWIN_COMPATIBILITY
|
||||||
void wxDC::DoGetTextExtent(const wxString& string, float *x, float *y,
|
void wxDC::DoGetTextExtent(const wxString& string, float *x, float *y,
|
||||||
|
@@ -399,12 +399,17 @@ bool wxFont::FreeResource(
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
} // end of wxFont::FreeResource
|
} // end of wxFont::FreeResource
|
||||||
|
|
||||||
WXHANDLE wxFont::GetResourceHandle()
|
WXHANDLE wxFont::GetHFONT() const
|
||||||
{
|
{
|
||||||
if (!M_FONTDATA)
|
if (!M_FONTDATA)
|
||||||
return 0;
|
return 0;
|
||||||
else
|
else
|
||||||
return (WXHANDLE)M_FONTDATA->m_hFont;
|
return (WXHANDLE)M_FONTDATA->m_hFont;
|
||||||
|
} // end of wxFont::GetHFONT
|
||||||
|
|
||||||
|
WXHANDLE wxFont::GetResourceHandle()
|
||||||
|
{
|
||||||
|
return GetHFONT();
|
||||||
} // end of wxFont::GetResourceHandle
|
} // end of wxFont::GetResourceHandle
|
||||||
|
|
||||||
bool wxFont::IsFree() const
|
bool wxFont::IsFree() const
|
||||||
|
@@ -30,14 +30,17 @@
|
|||||||
#else
|
#else
|
||||||
#include <utils.h>
|
#include <utils.h>
|
||||||
#include <sys\time.h>
|
#include <sys\time.h>
|
||||||
|
#include <types.h>
|
||||||
#include <in.h>
|
#include <in.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
#include <nerrno.h>
|
#include <nerrno.h>
|
||||||
#endif
|
#endif
|
||||||
#if defined(__VISAGECPP__) && __IBMCPP__ < 400
|
#if defined(__VISAGECPP__) && __IBMCPP__ < 400
|
||||||
|
#include <machine\endian.h>
|
||||||
#include <socket.h>
|
#include <socket.h>
|
||||||
#include <ioctl.h>
|
#include <ioctl.h>
|
||||||
#include <select.h>
|
#include <select.h>
|
||||||
|
#include <unistd.h>
|
||||||
#else
|
#else
|
||||||
#include <sys\socket.h>
|
#include <sys\socket.h>
|
||||||
#include <sys\ioctl.h>
|
#include <sys\ioctl.h>
|
||||||
@@ -1160,7 +1163,7 @@ GSocketError GAddress_INET_SetPortName(GAddress *address, const char *port,
|
|||||||
|
|
||||||
port_int = atoi(port);
|
port_int = atoi(port);
|
||||||
addr = (struct sockaddr_in *)address->m_addr;
|
addr = (struct sockaddr_in *)address->m_addr;
|
||||||
addr->sin_port = htons(port_int);
|
// addr->sin_port = htons(port_int);
|
||||||
return GSOCK_NOERROR;
|
return GSOCK_NOERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1182,7 +1185,7 @@ GSocketError GAddress_INET_SetPort(GAddress *address, unsigned short port)
|
|||||||
CHECK_ADDRESS(address, INET, GSOCK_INVADDR);
|
CHECK_ADDRESS(address, INET, GSOCK_INVADDR);
|
||||||
|
|
||||||
addr = (struct sockaddr_in *)address->m_addr;
|
addr = (struct sockaddr_in *)address->m_addr;
|
||||||
addr->sin_port = htons(port);
|
// addr->sin_port = htons(port);
|
||||||
|
|
||||||
return GSOCK_NOERROR;
|
return GSOCK_NOERROR;
|
||||||
}
|
}
|
||||||
@@ -1230,7 +1233,7 @@ unsigned short GAddress_INET_GetPort(GAddress *address)
|
|||||||
CHECK_ADDRESS(address, INET, 0);
|
CHECK_ADDRESS(address, INET, 0);
|
||||||
|
|
||||||
addr = (struct sockaddr_in *)address->m_addr;
|
addr = (struct sockaddr_in *)address->m_addr;
|
||||||
return ntohs(addr->sin_port);
|
return /*ntohs*/(addr->sin_port);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -241,6 +241,7 @@ COMMONOBJS = \
|
|||||||
..\common\$D\imagpng.obj \
|
..\common\$D\imagpng.obj \
|
||||||
..\common\$D\imagpnm.obj \
|
..\common\$D\imagpnm.obj \
|
||||||
..\common\$D\imagtiff.obj \
|
..\common\$D\imagtiff.obj \
|
||||||
|
..\common\$D\imagxpm.obj \
|
||||||
..\common\$D\intl.obj \
|
..\common\$D\intl.obj \
|
||||||
..\common\$D\ipcbase.obj \
|
..\common\$D\ipcbase.obj \
|
||||||
..\common\$D\layout.obj \
|
..\common\$D\layout.obj \
|
||||||
@@ -354,6 +355,7 @@ COMLIBOBJS2 = \
|
|||||||
imagpng.obj \
|
imagpng.obj \
|
||||||
imagpnm.obj \
|
imagpnm.obj \
|
||||||
imagtiff.obj \
|
imagtiff.obj \
|
||||||
|
imagxpm.obj \
|
||||||
intl.obj \
|
intl.obj \
|
||||||
ipcbase.obj \
|
ipcbase.obj \
|
||||||
layout.obj \
|
layout.obj \
|
||||||
@@ -385,10 +387,10 @@ COMLIBOBJS2 = \
|
|||||||
socket.obj \
|
socket.obj \
|
||||||
strconv.obj \
|
strconv.obj \
|
||||||
stream.obj \
|
stream.obj \
|
||||||
string.obj \
|
string.obj
|
||||||
tbarbase.obj
|
|
||||||
|
|
||||||
COMLIBOBJS3 = \
|
COMLIBOBJS3 = \
|
||||||
|
tbarbase.obj \
|
||||||
textcmn.obj \
|
textcmn.obj \
|
||||||
textfile.obj \
|
textfile.obj \
|
||||||
timercmn.obj \
|
timercmn.obj \
|
||||||
@@ -692,6 +694,7 @@ $(COMLIBOBJS2):
|
|||||||
copy ..\common\$D\imagpng.obj
|
copy ..\common\$D\imagpng.obj
|
||||||
copy ..\common\$D\imagpnm.obj
|
copy ..\common\$D\imagpnm.obj
|
||||||
copy ..\common\$D\imagtiff.obj
|
copy ..\common\$D\imagtiff.obj
|
||||||
|
copy ..\common\$D\imagxpm.obj
|
||||||
copy ..\common\$D\intl.obj
|
copy ..\common\$D\intl.obj
|
||||||
copy ..\common\$D\ipcbase.obj
|
copy ..\common\$D\ipcbase.obj
|
||||||
copy ..\common\$D\layout.obj
|
copy ..\common\$D\layout.obj
|
||||||
@@ -724,9 +727,9 @@ $(COMLIBOBJS2):
|
|||||||
copy ..\common\$D\strconv.obj
|
copy ..\common\$D\strconv.obj
|
||||||
copy ..\common\$D\stream.obj
|
copy ..\common\$D\stream.obj
|
||||||
copy ..\common\$D\string.obj
|
copy ..\common\$D\string.obj
|
||||||
copy ..\common\$D\tbarbase.obj
|
|
||||||
|
|
||||||
$(COMLIBOBJS3):
|
$(COMLIBOBJS3):
|
||||||
|
copy ..\common\$D\tbarbase.obj
|
||||||
copy ..\common\$D\textcmn.obj
|
copy ..\common\$D\textcmn.obj
|
||||||
copy ..\common\$D\textfile.obj
|
copy ..\common\$D\textfile.obj
|
||||||
copy ..\common\$D\timercmn.obj
|
copy ..\common\$D\timercmn.obj
|
||||||
|
@@ -4,7 +4,7 @@ DATA MULTIPLE NONSHARED READWRITE LOADONCALL
|
|||||||
CODE LOADONCALL
|
CODE LOADONCALL
|
||||||
|
|
||||||
EXPORTS
|
EXPORTS
|
||||||
;From library: H:\Dev\Wx2\Wxwindows\lib\wx.lib
|
;From library: H:\DEV\WX2\WXWINDOWS\lib\wx.lib
|
||||||
;From object file: dummy.cpp
|
;From object file: dummy.cpp
|
||||||
;PUBDEFs (Symbols available from object file):
|
;PUBDEFs (Symbols available from object file):
|
||||||
wxDummyChar
|
wxDummyChar
|
||||||
@@ -1503,6 +1503,7 @@ EXPORTS
|
|||||||
CopyObject__14wxCommandEventCFR8wxObject
|
CopyObject__14wxCommandEventCFR8wxObject
|
||||||
wxEVT_SCROLL_LINEUP
|
wxEVT_SCROLL_LINEUP
|
||||||
wxEVT_PAINT
|
wxEVT_PAINT
|
||||||
|
wxEVT_NULL
|
||||||
wxEVT_NC_RIGHT_UP
|
wxEVT_NC_RIGHT_UP
|
||||||
wxEVT_NC_PAINT
|
wxEVT_NC_PAINT
|
||||||
wxEVT_LEFT_UP
|
wxEVT_LEFT_UP
|
||||||
@@ -2838,6 +2839,37 @@ EXPORTS
|
|||||||
;wxPNMHandler::DoCanRead(wxInputStream&)
|
;wxPNMHandler::DoCanRead(wxInputStream&)
|
||||||
DoCanRead__12wxPNMHandlerFR13wxInputStream
|
DoCanRead__12wxPNMHandlerFR13wxInputStream
|
||||||
;From object file: ..\common\imagtiff.cpp
|
;From object file: ..\common\imagtiff.cpp
|
||||||
|
;PUBDEFs (Symbols available from object file):
|
||||||
|
;wxTIFFHandler::DoCanRead(wxInputStream&)
|
||||||
|
DoCanRead__13wxTIFFHandlerFR13wxInputStream
|
||||||
|
;TIFFwxOpen(wxOutputStream&,const char*,const char*)
|
||||||
|
TIFFwxOpen__FR14wxOutputStreamPCcT2
|
||||||
|
;wxTIFFHandler::LoadFile(wxImage*,wxInputStream&,unsigned long,int)
|
||||||
|
LoadFile__13wxTIFFHandlerFP7wxImageR13wxInputStreamUli
|
||||||
|
;wxTIFFHandler::GetImageCount(wxInputStream&)
|
||||||
|
GetImageCount__13wxTIFFHandlerFR13wxInputStream
|
||||||
|
;TIFFwxOpen(wxInputStream&,const char*,const char*)
|
||||||
|
TIFFwxOpen__FR13wxInputStreamPCcT2
|
||||||
|
;wxTIFFHandler::SaveFile(wxImage*,wxOutputStream&,unsigned long)
|
||||||
|
SaveFile__13wxTIFFHandlerFP7wxImageR14wxOutputStreamUl
|
||||||
|
__vft13wxTIFFHandler8wxObject
|
||||||
|
;wxConstructorForwxTIFFHandler()
|
||||||
|
wxConstructorForwxTIFFHandler__Fv
|
||||||
|
;wxTIFFHandler::sm_classwxTIFFHandler
|
||||||
|
sm_classwxTIFFHandler__13wxTIFFHandler
|
||||||
|
;From object file: ..\common\imagxpm.cpp
|
||||||
|
;PUBDEFs (Symbols available from object file):
|
||||||
|
;wxConstructorForwxXPMHandler()
|
||||||
|
wxConstructorForwxXPMHandler__Fv
|
||||||
|
;wxXPMHandler::sm_classwxXPMHandler
|
||||||
|
sm_classwxXPMHandler__12wxXPMHandler
|
||||||
|
__vft12wxXPMHandler8wxObject
|
||||||
|
;wxXPMHandler::DoCanRead(wxInputStream&)
|
||||||
|
DoCanRead__12wxXPMHandlerFR13wxInputStream
|
||||||
|
;wxXPMHandler::SaveFile(wxImage*,wxOutputStream&,unsigned long)
|
||||||
|
SaveFile__12wxXPMHandlerFP7wxImageR14wxOutputStreamUl
|
||||||
|
;wxXPMHandler::LoadFile(wxImage*,wxInputStream&,unsigned long,int)
|
||||||
|
LoadFile__12wxXPMHandlerFP7wxImageR13wxInputStreamUli
|
||||||
;From object file: ..\common\intl.cpp
|
;From object file: ..\common\intl.cpp
|
||||||
;PUBDEFs (Symbols available from object file):
|
;PUBDEFs (Symbols available from object file):
|
||||||
;wxLocale::Init(int,int)
|
;wxLocale::Init(int,int)
|
||||||
@@ -9460,6 +9492,8 @@ EXPORTS
|
|||||||
Initialize__20wxHtmlHelpControllerFRC8wxString
|
Initialize__20wxHtmlHelpControllerFRC8wxString
|
||||||
;wxHtmlHelpController::SetFrameParameters(const wxString&,const wxSize&,const wxPoint&,unsigned long)
|
;wxHtmlHelpController::SetFrameParameters(const wxString&,const wxSize&,const wxPoint&,unsigned long)
|
||||||
SetFrameParameters__20wxHtmlHelpControllerFRC8wxStringRC6wxSizeRC7wxPointUl
|
SetFrameParameters__20wxHtmlHelpControllerFRC8wxStringRC6wxSizeRC7wxPointUl
|
||||||
|
;wxHtmlHelpController::SetBookBasePath(const wxString&,int)
|
||||||
|
SetBookBasePath__20wxHtmlHelpControllerFRC8wxStringi
|
||||||
;wxConstructorForwxHtmlHelpController()
|
;wxConstructorForwxHtmlHelpController()
|
||||||
wxConstructorForwxHtmlHelpController__Fv
|
wxConstructorForwxHtmlHelpController__Fv
|
||||||
;wxHtmlHelpController::~wxHtmlHelpController()
|
;wxHtmlHelpController::~wxHtmlHelpController()
|
||||||
@@ -10579,8 +10613,6 @@ EXPORTS
|
|||||||
;PUBDEFs (Symbols available from object file):
|
;PUBDEFs (Symbols available from object file):
|
||||||
;wxClipboard::IsSupported(wxDataFormat)
|
;wxClipboard::IsSupported(wxDataFormat)
|
||||||
IsSupported__11wxClipboardF12wxDataFormat
|
IsSupported__11wxClipboardF12wxDataFormat
|
||||||
;wxClipboard::GetData(wxDataObject*)
|
|
||||||
GetData__11wxClipboardFP12wxDataObject
|
|
||||||
;wxGetClipboardFormatName(wxDataFormat,char*,int)
|
;wxGetClipboardFormatName(wxDataFormat,char*,int)
|
||||||
wxGetClipboardFormatName__F12wxDataFormatPci
|
wxGetClipboardFormatName__F12wxDataFormatPci
|
||||||
;wxClipboard::wxClipboard()
|
;wxClipboard::wxClipboard()
|
||||||
@@ -10618,6 +10650,8 @@ EXPORTS
|
|||||||
Flush__11wxClipboardFv
|
Flush__11wxClipboardFv
|
||||||
;wxIsClipboardFormatAvailable(wxDataFormat)
|
;wxIsClipboardFormatAvailable(wxDataFormat)
|
||||||
wxIsClipboardFormatAvailable__F12wxDataFormat
|
wxIsClipboardFormatAvailable__F12wxDataFormat
|
||||||
|
;wxClipboard::GetData(wxDataObject&)
|
||||||
|
GetData__11wxClipboardFR12wxDataObject
|
||||||
;wxClipboard::~wxClipboard()
|
;wxClipboard::~wxClipboard()
|
||||||
__dt__11wxClipboardFv
|
__dt__11wxClipboardFv
|
||||||
;wxClipboard::Clear()
|
;wxClipboard::Clear()
|
||||||
@@ -11292,6 +11326,8 @@ EXPORTS
|
|||||||
OS2SelectMatchingFontByName__6wxFontFv
|
OS2SelectMatchingFontByName__6wxFontFv
|
||||||
;wxFont::IsFree() const
|
;wxFont::IsFree() const
|
||||||
IsFree__6wxFontCFv
|
IsFree__6wxFontCFv
|
||||||
|
;wxFont::GetHFONT() const
|
||||||
|
GetHFONT__6wxFontCFv
|
||||||
;wxFont::GetFamily() const
|
;wxFont::GetFamily() const
|
||||||
GetFamily__6wxFontCFv
|
GetFamily__6wxFontCFv
|
||||||
;wxFont::GetFaceName() const
|
;wxFont::GetFaceName() const
|
||||||
@@ -13377,6 +13413,8 @@ EXPORTS
|
|||||||
;wxDisplayDepth()
|
;wxDisplayDepth()
|
||||||
wxDisplayDepth__Fv
|
wxDisplayDepth__Fv
|
||||||
gs_wxBusyCursor
|
gs_wxBusyCursor
|
||||||
|
;wxSetEnv(const wxString&,const char*)
|
||||||
|
wxSetEnv__FRC8wxStringPCc
|
||||||
;wxGetHomeDir(wxString*)
|
;wxGetHomeDir(wxString*)
|
||||||
wxGetHomeDir__FP8wxString
|
wxGetHomeDir__FP8wxString
|
||||||
;wxUsleep(unsigned long)
|
;wxUsleep(unsigned long)
|
||||||
@@ -13409,6 +13447,8 @@ EXPORTS
|
|||||||
wxIsBusy__Fv
|
wxIsBusy__Fv
|
||||||
;wxGetFreeMemory()
|
;wxGetFreeMemory()
|
||||||
wxGetFreeMemory__Fv
|
wxGetFreeMemory__Fv
|
||||||
|
;wxGetEnv(const wxString&,wxString*)
|
||||||
|
wxGetEnv__FRC8wxStringP8wxString
|
||||||
;From object file: ..\os2\utilsexc.cpp
|
;From object file: ..\os2\utilsexc.cpp
|
||||||
;PUBDEFs (Symbols available from object file):
|
;PUBDEFs (Symbols available from object file):
|
||||||
;wxExecute(char**,unsigned long,wxProcess*)
|
;wxExecute(char**,unsigned long,wxProcess*)
|
||||||
|
Reference in New Issue
Block a user