зеркало из https://github.com/mozilla/pjs.git
Added the DrawStdLine call. The RenderingContext now updates the mTransMatrix pointer member so the RenderingContextImpl can use this matrix.
This commit is contained in:
Родитель
fd11a8f6a4
Коммит
ec0f7330b9
|
@ -198,6 +198,7 @@ void nsRenderingContextMac::SelectDrawingSurface(nsDrawingSurfaceMac* aSurface,
|
||||||
mCurrentSurface = aSurface;
|
mCurrentSurface = aSurface;
|
||||||
aSurface->GetGrafPtr(&mPort);
|
aSurface->GetGrafPtr(&mPort);
|
||||||
mGS = aSurface->GetGS();
|
mGS = aSurface->GetGS();
|
||||||
|
mTranMatrix = &(mGS->mTMatrix);
|
||||||
|
|
||||||
// quickdraw initialization
|
// quickdraw initialization
|
||||||
::SetPort(mPort);
|
::SetPort(mPort);
|
||||||
|
@ -308,6 +309,9 @@ NS_IMETHODIMP nsRenderingContextMac::PopState(PRBool &aClipEmpty)
|
||||||
// remove the GS object from the stack and delete it
|
// remove the GS object from the stack and delete it
|
||||||
mGSStack->RemoveElementAt(index);
|
mGSStack->RemoveElementAt(index);
|
||||||
sGraphicStatePool.ReleaseGS(gs);
|
sGraphicStatePool.ReleaseGS(gs);
|
||||||
|
|
||||||
|
// make sure the matrix is pointing at the current matrix
|
||||||
|
mTranMatrix = &(mGS->mTMatrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
aClipEmpty = (::EmptyRgn(mGS->mClipRegion));
|
aClipEmpty = (::EmptyRgn(mGS->mClipRegion));
|
||||||
|
@ -862,6 +866,30 @@ NS_IMETHODIMP nsRenderingContextMac::DrawLine(nscoord aX0, nscoord aY0, nscoord
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------
|
||||||
|
|
||||||
|
NS_IMETHODIMP nsRenderingContextMac::DrawStdLine(nscoord aX0, nscoord aY0, nscoord aX1, nscoord aY1)
|
||||||
|
{
|
||||||
|
StPortSetter setter(mPort);
|
||||||
|
|
||||||
|
// make the line one pixel shorter to match other platforms
|
||||||
|
nscoord diffX = aX1 - aX0;
|
||||||
|
if (diffX)
|
||||||
|
diffX -= (diffX > 0 ? 1 : -1);
|
||||||
|
|
||||||
|
nscoord diffY = aY1 - aY0;
|
||||||
|
if (diffY)
|
||||||
|
diffY -= (diffY > 0 ? 1 : -1);
|
||||||
|
|
||||||
|
// draw line
|
||||||
|
::MoveTo(aX0, aY0);
|
||||||
|
::Line(diffX, diffY);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------
|
//------------------------------------------------------------------------
|
||||||
|
|
||||||
NS_IMETHODIMP nsRenderingContextMac::DrawPolyline(const nsPoint aPoints[], PRInt32 aNumPoints)
|
NS_IMETHODIMP nsRenderingContextMac::DrawPolyline(const nsPoint aPoints[], PRInt32 aNumPoints)
|
||||||
|
|
|
@ -88,6 +88,7 @@ public:
|
||||||
NS_IMETHOD CreateDrawingSurface(nsRect *aBounds, PRUint32 aSurfFlags, nsDrawingSurface &aSurface);
|
NS_IMETHOD CreateDrawingSurface(nsRect *aBounds, PRUint32 aSurfFlags, nsDrawingSurface &aSurface);
|
||||||
NS_IMETHOD DestroyDrawingSurface(nsDrawingSurface aDS);
|
NS_IMETHOD DestroyDrawingSurface(nsDrawingSurface aDS);
|
||||||
NS_IMETHOD DrawLine(nscoord aX0, nscoord aY0, nscoord aX1, nscoord aY1);
|
NS_IMETHOD DrawLine(nscoord aX0, nscoord aY0, nscoord aX1, nscoord aY1);
|
||||||
|
NS_IMETHOD DrawStdLine(nscoord aX0, nscoord aY0, nscoord aX1, nscoord aY1);
|
||||||
NS_IMETHOD DrawPolyline(const nsPoint aPoints[], PRInt32 aNumPoints);
|
NS_IMETHOD DrawPolyline(const nsPoint aPoints[], PRInt32 aNumPoints);
|
||||||
NS_IMETHOD DrawRect(const nsRect& aRect);
|
NS_IMETHOD DrawRect(const nsRect& aRect);
|
||||||
NS_IMETHOD DrawRect(nscoord aX, nscoord aY, nscoord aWidth, nscoord aHeight);
|
NS_IMETHOD DrawRect(nscoord aX, nscoord aY, nscoord aWidth, nscoord aHeight);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче