Fix swapped colors on Windows.
git-svn-id: svn://10.0.0.236/branches/SVG_20020806_BRANCH@146953 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -61,8 +61,9 @@ public:
|
||||
static const nsIID& GetIID() { static nsIID iid = NS_ISVGLIBARTBITMAP_IID; return iid; }
|
||||
|
||||
enum PixelFormat {
|
||||
PIXEL_FORMAT_24_RGB = 1, // linux, windows
|
||||
PIXEL_FORMAT_32_ABGR = 2 // mac
|
||||
PIXEL_FORMAT_24_RGB = 1, // linux
|
||||
PIXEL_FORMAT_24_BGR = 2, // windows
|
||||
PIXEL_FORMAT_32_ABGR = 3 // mac
|
||||
};
|
||||
|
||||
NS_IMETHOD_(PRUint8 *) GetBits()=0;
|
||||
|
||||
@@ -197,7 +197,11 @@ nsSVGLibartBitmapDefault::GetBits()
|
||||
NS_IMETHODIMP_(nsISVGLibartBitmap::PixelFormat)
|
||||
nsSVGLibartBitmapDefault::GetPixelFormat()
|
||||
{
|
||||
#ifdef WIN32
|
||||
return PIXEL_FORMAT_24_BGR;
|
||||
#else
|
||||
return PIXEL_FORMAT_24_RGB;
|
||||
#endif
|
||||
}
|
||||
|
||||
NS_IMETHODIMP_(int)
|
||||
|
||||
@@ -196,6 +196,17 @@ nsSVGLibartCanvas::Clear(nscolor color)
|
||||
}
|
||||
break;
|
||||
}
|
||||
case nsISVGLibartBitmap::PIXEL_FORMAT_24_BGR:
|
||||
{
|
||||
PRInt32 stride = mBitmap->GetLineStride();
|
||||
PRInt32 width = mBitmap->GetWidth();
|
||||
PRUint8* buf = mBitmap->GetBits();
|
||||
PRUint8* end = buf + stride*mBitmap->GetHeight();
|
||||
for ( ; buf<end; buf += stride) {
|
||||
art_rgb_fill_run(buf, blue, green, red, width);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case nsISVGLibartBitmap::PIXEL_FORMAT_32_ABGR:
|
||||
{
|
||||
NS_ASSERTION(mBitmap->GetLineStride() == 4*mBitmap->GetWidth(), "strange pixel format");
|
||||
@@ -254,6 +265,11 @@ nsSVGLibartCanvas::GetArtColor(nscolor rgb, ArtColor& artColor)
|
||||
artColor[1] = ART_PIX_MAX_FROM_8(NS_GET_G(rgb));
|
||||
artColor[2] = ART_PIX_MAX_FROM_8(NS_GET_B(rgb));
|
||||
break;
|
||||
case nsISVGLibartBitmap::PIXEL_FORMAT_24_BGR:
|
||||
artColor[0] = ART_PIX_MAX_FROM_8(NS_GET_B(rgb));
|
||||
artColor[1] = ART_PIX_MAX_FROM_8(NS_GET_G(rgb));
|
||||
artColor[2] = ART_PIX_MAX_FROM_8(NS_GET_R(rgb));
|
||||
break;
|
||||
case nsISVGLibartBitmap::PIXEL_FORMAT_32_ABGR:
|
||||
artColor[3] = ART_PIX_MAX_FROM_8(NS_GET_R(rgb));
|
||||
artColor[2] = ART_PIX_MAX_FROM_8(NS_GET_G(rgb));
|
||||
|
||||
Reference in New Issue
Block a user