static void PaintCheckMark(nsIRenderingContext& aRenderingContext, const nsRect& aRect) { // Points come from the coordinates on a 7X7 unit box centered at 0,0 const PRInt32 checkPolygonX[] = { -3, -1, 3, 3, -1, -3 }; const PRInt32 checkPolygonY[] = { -1, 1, -3, -1, 3, 1 }; const PRInt32 checkNumPoints = sizeof(checkPolygonX) / sizeof(PRInt32); const PRInt32 checkSize = 9; // This is value is determined by adding 2 // units to pad the 7x7 unit checkmark // Scale the checkmark based on the smallest dimension nscoord paintScale = PR_MIN(aRect.width, aRect.height) / checkSize; nsPoint paintCenter(aRect.x + aRect.width / 2, aRect.y + aRect.height / 2); nsPoint paintPolygon[checkNumPoints]; // Convert checkmark for screen rendering for (PRInt32 polyIndex = 0; polyIndex < checkNumPoints; polyIndex++) { paintPolygon[polyIndex] = paintCenter + nsPoint(checkPolygonX[polyIndex] * paintScale, checkPolygonY[polyIndex] * paintScale); } aRenderingContext.FillPolygon(paintPolygon, checkNumPoints); }
static void PaintCheckMark(nsIFrame* aFrame, nsIRenderingContext* aCtx, const nsRect& aDirtyRect, nsPoint aPt) { nsRect rect(aPt, aFrame->GetSize()); rect.Deflate(aFrame->GetUsedBorderAndPadding()); // Points come from the coordinates on a 7X7 unit box centered at 0,0 const PRInt32 checkPolygonX[] = { -3, -1, 3, 3, -1, -3 }; const PRInt32 checkPolygonY[] = { -1, 1, -3, -1, 3, 1 }; const PRInt32 checkNumPoints = sizeof(checkPolygonX) / sizeof(PRInt32); const PRInt32 checkSize = 9; // 2 units of padding on either side // of the 7x7 unit checkmark // Scale the checkmark based on the smallest dimension nscoord paintScale = NS_MIN(rect.width, rect.height) / checkSize; nsPoint paintCenter(rect.x + rect.width / 2, rect.y + rect.height / 2); nsPoint paintPolygon[checkNumPoints]; // Convert checkmark for screen rendering for (PRInt32 polyIndex = 0; polyIndex < checkNumPoints; polyIndex++) { paintPolygon[polyIndex] = paintCenter + nsPoint(checkPolygonX[polyIndex] * paintScale, checkPolygonY[polyIndex] * paintScale); } aCtx->SetColor(aFrame->GetStyleColor()->mColor); aCtx->FillPolygon(paintPolygon, checkNumPoints); }