our BPicture stream format wasn't compatible with R5 one.
Hopefully fixed all the problems. Reported by Marc Flerackers. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19241 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -26,8 +26,7 @@ public:
|
|||||||
virtual ~PicturePlayer();
|
virtual ~PicturePlayer();
|
||||||
|
|
||||||
int16 GetOp();
|
int16 GetOp();
|
||||||
bool GetBool();
|
int8 GetInt8();
|
||||||
int16 GetInt8();
|
|
||||||
int16 GetInt16();
|
int16 GetInt16();
|
||||||
int32 GetInt32();
|
int32 GetInt32();
|
||||||
int64 GetInt64();
|
int64 GetInt64();
|
||||||
|
|||||||
@@ -63,12 +63,12 @@ PicturePlayer::GetOp()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
int8
|
||||||
PicturePlayer::GetBool()
|
PicturePlayer::GetInt8()
|
||||||
{
|
{
|
||||||
bool data;
|
int8 data;
|
||||||
|
|
||||||
fData.Read(&data, sizeof(bool));
|
fData.Read(&data, sizeof(int8));
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
@@ -169,6 +169,7 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
((fnc_BPoint)callBackTable[1])(userData, where);
|
((fnc_BPoint)callBackTable[1])(userData, where);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_STROKE_LINE:
|
case B_PIC_STROKE_LINE:
|
||||||
{
|
{
|
||||||
BPoint start = GetCoord();
|
BPoint start = GetCoord();
|
||||||
@@ -176,18 +177,21 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
((fnc_BPointBPoint)callBackTable[2])(userData, start, end);
|
((fnc_BPointBPoint)callBackTable[2])(userData, start, end);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_STROKE_RECT:
|
case B_PIC_STROKE_RECT:
|
||||||
{
|
{
|
||||||
BRect rect = GetRect();
|
BRect rect = GetRect();
|
||||||
((fnc_BRect)callBackTable[3])(userData, rect);
|
((fnc_BRect)callBackTable[3])(userData, rect);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_FILL_RECT:
|
case B_PIC_FILL_RECT:
|
||||||
{
|
{
|
||||||
BRect rect = GetRect();
|
BRect rect = GetRect();
|
||||||
((fnc_BRect)callBackTable[4])(userData, rect);
|
((fnc_BRect)callBackTable[4])(userData, rect);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_STROKE_ROUND_RECT:
|
case B_PIC_STROKE_ROUND_RECT:
|
||||||
{
|
{
|
||||||
BRect rect = GetRect();
|
BRect rect = GetRect();
|
||||||
@@ -195,6 +199,7 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
((fnc_BRectBPoint)callBackTable[5])(userData, rect, radii);
|
((fnc_BRectBPoint)callBackTable[5])(userData, rect, radii);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_FILL_ROUND_RECT:
|
case B_PIC_FILL_ROUND_RECT:
|
||||||
{
|
{
|
||||||
BRect rect = GetRect();
|
BRect rect = GetRect();
|
||||||
@@ -202,6 +207,7 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
((fnc_BRectBPoint)callBackTable[6])(userData, rect, radii);
|
((fnc_BRectBPoint)callBackTable[6])(userData, rect, radii);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_STROKE_BEZIER:
|
case B_PIC_STROKE_BEZIER:
|
||||||
{
|
{
|
||||||
BPoint control[4];
|
BPoint control[4];
|
||||||
@@ -209,6 +215,7 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
((fnc_PBPoint)callBackTable[7])(userData, control);
|
((fnc_PBPoint)callBackTable[7])(userData, control);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_FILL_BEZIER:
|
case B_PIC_FILL_BEZIER:
|
||||||
{
|
{
|
||||||
BPoint control[4];
|
BPoint control[4];
|
||||||
@@ -216,6 +223,7 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
((fnc_PBPoint)callBackTable[8])(userData, control);
|
((fnc_PBPoint)callBackTable[8])(userData, control);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_STROKE_ARC:
|
case B_PIC_STROKE_ARC:
|
||||||
{
|
{
|
||||||
BPoint center = GetCoord();
|
BPoint center = GetCoord();
|
||||||
@@ -226,6 +234,7 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
startTheta, arcTheta);
|
startTheta, arcTheta);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_FILL_ARC:
|
case B_PIC_FILL_ARC:
|
||||||
{
|
{
|
||||||
BPoint center = GetCoord();
|
BPoint center = GetCoord();
|
||||||
@@ -236,6 +245,7 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
startTheta, arcTheta);
|
startTheta, arcTheta);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_STROKE_ELLIPSE:
|
case B_PIC_STROKE_ELLIPSE:
|
||||||
{
|
{
|
||||||
BRect rect = GetRect();
|
BRect rect = GetRect();
|
||||||
@@ -244,6 +254,7 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
((fnc_BPointBPoint)callBackTable[11])(userData, center, radii);
|
((fnc_BPointBPoint)callBackTable[11])(userData, center, radii);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_FILL_ELLIPSE:
|
case B_PIC_FILL_ELLIPSE:
|
||||||
{
|
{
|
||||||
BRect rect = GetRect();
|
BRect rect = GetRect();
|
||||||
@@ -252,16 +263,18 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
((fnc_BPointBPoint)callBackTable[12])(userData, center, radii);
|
((fnc_BPointBPoint)callBackTable[12])(userData, center, radii);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_STROKE_POLYGON:
|
case B_PIC_STROKE_POLYGON:
|
||||||
{
|
{
|
||||||
int32 numPoints = GetInt32();
|
int32 numPoints = GetInt32();
|
||||||
BPoint *points = new BPoint[numPoints];
|
BPoint *points = new BPoint[numPoints];
|
||||||
GetData(points, numPoints * sizeof(BPoint));
|
GetData(points, numPoints * sizeof(BPoint));
|
||||||
bool isClosed = GetBool();
|
bool isClosed = (bool)GetInt8();
|
||||||
((fnc_iPBPointb)callBackTable[13])(userData, numPoints, points, isClosed);
|
((fnc_iPBPointb)callBackTable[13])(userData, numPoints, points, isClosed);
|
||||||
delete[] points;
|
delete[] points;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_FILL_POLYGON:
|
case B_PIC_FILL_POLYGON:
|
||||||
{
|
{
|
||||||
int32 numPoints = GetInt32();
|
int32 numPoints = GetInt32();
|
||||||
@@ -271,50 +284,30 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
delete[] points;
|
delete[] points;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_STROKE_SHAPE:
|
case B_PIC_STROKE_SHAPE:
|
||||||
{
|
|
||||||
BRect shapeFrame = GetRect();
|
|
||||||
(void)shapeFrame;
|
|
||||||
|
|
||||||
int32 opCount, ptCount;
|
|
||||||
opCount = GetInt32();
|
|
||||||
ptCount = GetInt32();
|
|
||||||
|
|
||||||
uint32 *opList = new uint32[opCount];
|
|
||||||
BPoint *ptList = new BPoint[ptCount];
|
|
||||||
GetData(opList, opCount * sizeof(uint32));
|
|
||||||
GetData(ptList, ptCount * sizeof(BPoint));
|
|
||||||
|
|
||||||
BShape shape;
|
|
||||||
shape.SetData(opCount, ptCount, opList, ptList);
|
|
||||||
|
|
||||||
((fnc_BShape)callBackTable[15])(userData, &shape);
|
|
||||||
delete[] opList;
|
|
||||||
delete[] ptList;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case B_PIC_FILL_SHAPE:
|
case B_PIC_FILL_SHAPE:
|
||||||
{
|
{
|
||||||
BRect shapeFrame = GetRect();
|
int32 opCount = GetInt32();
|
||||||
(void)shapeFrame;
|
|
||||||
|
|
||||||
int32 opCount, ptCount;
|
|
||||||
opCount = GetInt32();
|
|
||||||
ptCount = GetInt32();
|
|
||||||
|
|
||||||
uint32 *opList = new uint32[opCount];
|
uint32 *opList = new uint32[opCount];
|
||||||
BPoint *ptList = new BPoint[ptCount];
|
|
||||||
GetData(opList, opCount * sizeof(uint32));
|
GetData(opList, opCount * sizeof(uint32));
|
||||||
|
|
||||||
|
int32 ptCount = GetInt32();
|
||||||
|
BPoint *ptList = new BPoint[ptCount];
|
||||||
GetData(ptList, ptCount * sizeof(BPoint));
|
GetData(ptList, ptCount * sizeof(BPoint));
|
||||||
|
|
||||||
BShape shape;
|
BShape shape;
|
||||||
shape.SetData(opCount, ptCount, opList, ptList);
|
shape.SetData(opCount, ptCount, opList, ptList);
|
||||||
|
|
||||||
((fnc_BShape)callBackTable[16])(userData, &shape);
|
const int32 tableIndex = (op == B_PIC_STROKE_SHAPE) ? 15 : 16;
|
||||||
|
((fnc_BShape)callBackTable[tableIndex])(userData, &shape);
|
||||||
|
|
||||||
delete[] opList;
|
delete[] opList;
|
||||||
delete[] ptList;
|
delete[] ptList;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_DRAW_STRING:
|
case B_PIC_DRAW_STRING:
|
||||||
{
|
{
|
||||||
int32 len = GetInt32();
|
int32 len = GetInt32();
|
||||||
@@ -327,6 +320,7 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
delete[] string;
|
delete[] string;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_DRAW_PIXELS:
|
case B_PIC_DRAW_PIXELS:
|
||||||
{
|
{
|
||||||
BRect src = GetRect();
|
BRect src = GetRect();
|
||||||
@@ -336,68 +330,81 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
int32 bytesPerRow = GetInt32();
|
int32 bytesPerRow = GetInt32();
|
||||||
int32 pixelFormat = GetInt32();
|
int32 pixelFormat = GetInt32();
|
||||||
int32 flags = GetInt32();
|
int32 flags = GetInt32();
|
||||||
char *data = new char[size - (fData.Position() - pos)];
|
int32 length = GetInt32();
|
||||||
GetData(data, size - (fData.Position() - pos));
|
char *data = new char[length];
|
||||||
|
GetData(data, length);
|
||||||
((fnc_DrawPixels)callBackTable[18])(userData, src, dest,
|
((fnc_DrawPixels)callBackTable[18])(userData, src, dest,
|
||||||
width, height, bytesPerRow, pixelFormat, flags, data);
|
width, height, bytesPerRow, pixelFormat, flags, data);
|
||||||
delete[] data;
|
delete[] data;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_DRAW_PICTURE:
|
case B_PIC_DRAW_PICTURE:
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_ENTER_STATE_CHANGE:
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case B_PIC_SET_CLIPPING_RECTS:
|
case B_PIC_SET_CLIPPING_RECTS:
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_CLEAR_CLIPPING_RECTS:
|
case B_PIC_CLEAR_CLIPPING_RECTS:
|
||||||
{
|
{
|
||||||
((fnc_PBRecti)callBackTable[20])(userData, NULL, 0);
|
((fnc_PBRecti)callBackTable[20])(userData, NULL, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_CLIP_TO_PICTURE:
|
case B_PIC_CLIP_TO_PICTURE:
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_PUSH_STATE:
|
case B_PIC_PUSH_STATE:
|
||||||
{
|
{
|
||||||
((fnc)callBackTable[22])(userData);
|
((fnc)callBackTable[22])(userData);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_POP_STATE:
|
case B_PIC_POP_STATE:
|
||||||
{
|
{
|
||||||
((fnc)callBackTable[23])(userData);
|
((fnc)callBackTable[23])(userData);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case B_PIC_ENTER_STATE_CHANGE:
|
||||||
|
{
|
||||||
|
((fnc)callBackTable[24])(userData);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case B_PIC_ENTER_FONT_STATE:
|
case B_PIC_ENTER_FONT_STATE:
|
||||||
{
|
{
|
||||||
((fnc)callBackTable[26])(userData);
|
((fnc)callBackTable[26])(userData);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_ORIGIN:
|
case B_PIC_SET_ORIGIN:
|
||||||
{
|
{
|
||||||
BPoint pt = GetCoord();
|
BPoint pt = GetCoord();
|
||||||
((fnc_BPoint)callBackTable[28])(userData, pt);
|
((fnc_BPoint)callBackTable[28])(userData, pt);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_PEN_LOCATION:
|
case B_PIC_SET_PEN_LOCATION:
|
||||||
{
|
{
|
||||||
BPoint pt = GetCoord();
|
BPoint pt = GetCoord();
|
||||||
((fnc_BPoint)callBackTable[29])(userData, pt);
|
((fnc_BPoint)callBackTable[29])(userData, pt);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_DRAWING_MODE:
|
case B_PIC_SET_DRAWING_MODE:
|
||||||
{
|
{
|
||||||
int16 mode = GetInt16();
|
int16 mode = GetInt16();
|
||||||
((fnc_s)callBackTable[30])(userData, mode);
|
((fnc_s)callBackTable[30])(userData, mode);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_LINE_MODE:
|
case B_PIC_SET_LINE_MODE:
|
||||||
{
|
{
|
||||||
int16 capMode = GetInt16();
|
int16 capMode = GetInt16();
|
||||||
@@ -406,24 +413,28 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
((fnc_ssf)callBackTable[31])(userData, capMode, joinMode, miterLimit);
|
((fnc_ssf)callBackTable[31])(userData, capMode, joinMode, miterLimit);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_PEN_SIZE:
|
case B_PIC_SET_PEN_SIZE:
|
||||||
{
|
{
|
||||||
float size = GetFloat();
|
float size = GetFloat();
|
||||||
((fnc_f)callBackTable[32])(userData, size);
|
((fnc_f)callBackTable[32])(userData, size);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_FORE_COLOR:
|
case B_PIC_SET_FORE_COLOR:
|
||||||
{
|
{
|
||||||
rgb_color color = GetColor();
|
rgb_color color = GetColor();
|
||||||
((fnc_Color)callBackTable[33])(userData, color);
|
((fnc_Color)callBackTable[33])(userData, color);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_BACK_COLOR:
|
case B_PIC_SET_BACK_COLOR:
|
||||||
{
|
{
|
||||||
rgb_color color = GetColor();
|
rgb_color color = GetColor();
|
||||||
((fnc_Color)callBackTable[34])(userData, color);
|
((fnc_Color)callBackTable[34])(userData, color);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_STIPLE_PATTERN:
|
case B_PIC_SET_STIPLE_PATTERN:
|
||||||
{
|
{
|
||||||
pattern p;
|
pattern p;
|
||||||
@@ -431,12 +442,14 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
((fnc_Pattern)callBackTable[35])(userData, p);
|
((fnc_Pattern)callBackTable[35])(userData, p);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_SCALE:
|
case B_PIC_SET_SCALE:
|
||||||
{
|
{
|
||||||
float scale = GetFloat();
|
float scale = GetFloat();
|
||||||
((fnc_f)callBackTable[36])(userData, scale);
|
((fnc_f)callBackTable[36])(userData, scale);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_FONT_FAMILY:
|
case B_PIC_SET_FONT_FAMILY:
|
||||||
{
|
{
|
||||||
int32 len = GetInt32();
|
int32 len = GetInt32();
|
||||||
@@ -447,6 +460,7 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
delete[] string;
|
delete[] string;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_FONT_STYLE:
|
case B_PIC_SET_FONT_STYLE:
|
||||||
{
|
{
|
||||||
int32 len = GetInt32();
|
int32 len = GetInt32();
|
||||||
@@ -457,30 +471,35 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
delete[] string;
|
delete[] string;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_FONT_SPACING:
|
case B_PIC_SET_FONT_SPACING:
|
||||||
{
|
{
|
||||||
int32 spacing = GetInt32();
|
int32 spacing = GetInt32();
|
||||||
((fnc_i)callBackTable[39])(userData, spacing);
|
((fnc_i)callBackTable[39])(userData, spacing);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_FONT_SIZE:
|
case B_PIC_SET_FONT_SIZE:
|
||||||
{
|
{
|
||||||
float size = GetFloat();
|
float size = GetFloat();
|
||||||
((fnc_f)callBackTable[40])(userData, size);
|
((fnc_f)callBackTable[40])(userData, size);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_FONT_ROTATE:
|
case B_PIC_SET_FONT_ROTATE:
|
||||||
{
|
{
|
||||||
float rotation = GetFloat();
|
float rotation = GetFloat();
|
||||||
((fnc_f)callBackTable[41])(userData, rotation);
|
((fnc_f)callBackTable[41])(userData, rotation);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_FONT_ENCODING:
|
case B_PIC_SET_FONT_ENCODING:
|
||||||
{
|
{
|
||||||
int32 encoding = GetInt32();
|
int32 encoding = GetInt32();
|
||||||
((fnc_i)callBackTable[42])(userData, encoding);
|
((fnc_i)callBackTable[42])(userData, encoding);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_FONT_FLAGS:
|
case B_PIC_SET_FONT_FLAGS:
|
||||||
{
|
{
|
||||||
int32 flags = GetInt32();
|
int32 flags = GetInt32();
|
||||||
@@ -494,6 +513,7 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
((fnc_f)callBackTable[44])(userData, shear);
|
((fnc_f)callBackTable[44])(userData, shear);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case B_PIC_SET_FONT_FACE:
|
case B_PIC_SET_FONT_FACE:
|
||||||
{
|
{
|
||||||
int32 flags = GetInt32();
|
int32 flags = GetInt32();
|
||||||
@@ -510,13 +530,14 @@ PicturePlayer::Play(void **callBackTable, int32 tableEntries, void *userData)
|
|||||||
((fnc_ss)callBackTable[47])(userData, alphaSrcMode, alphaFncMode);
|
((fnc_ss)callBackTable[47])(userData, alphaSrcMode, alphaFncMode);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we didn't read enough bytes, skip them. This is not a error
|
// If we didn't read enough bytes, skip them. This is not a error
|
||||||
// since the instructions can change over time.
|
// since the instructions can change over time.
|
||||||
if (fData.Position() - pos < size)
|
if (op != B_ENTER_STATE_CHANGE && op != B_ENTER_FONT_STATE && fData.Position() - pos < size)
|
||||||
fData.Seek(size - (fData.Position() - pos), SEEK_CUR);
|
fData.Seek(size - (fData.Position() - pos), SEEK_CUR);
|
||||||
|
|
||||||
// TODO: what if too much was read, should we return B_ERROR?
|
// TODO: what if too much was read, should we return B_ERROR?
|
||||||
|
|||||||
@@ -2331,6 +2331,7 @@ ServerWindow::_DispatchPictureMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case AS_LAYER_PUSH_STATE:
|
case AS_LAYER_PUSH_STATE:
|
||||||
{
|
{
|
||||||
picture->BeginOp(B_PIC_PUSH_STATE);
|
picture->BeginOp(B_PIC_PUSH_STATE);
|
||||||
@@ -2404,6 +2405,7 @@ ServerWindow::_DispatchPictureMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
picture->EndOp();
|
picture->EndOp();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case AS_STROKE_ELLIPSE:
|
case AS_STROKE_ELLIPSE:
|
||||||
case AS_FILL_ELLIPSE:
|
case AS_FILL_ELLIPSE:
|
||||||
{
|
{
|
||||||
@@ -2416,6 +2418,7 @@ ServerWindow::_DispatchPictureMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case AS_STROKE_ARC:
|
case AS_STROKE_ARC:
|
||||||
case AS_FILL_ARC:
|
case AS_FILL_ARC:
|
||||||
{
|
{
|
||||||
@@ -2436,6 +2439,7 @@ ServerWindow::_DispatchPictureMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
picture->EndOp();
|
picture->EndOp();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case AS_STROKE_LINE:
|
case AS_STROKE_LINE:
|
||||||
{
|
{
|
||||||
float x1, y1, x2, y2;
|
float x1, y1, x2, y2;
|
||||||
@@ -2539,14 +2543,14 @@ ServerWindow::_DispatchPictureMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
|
|
||||||
uint32 *opList = new(nothrow) uint32[opCount];
|
uint32 *opList = new(nothrow) uint32[opCount];
|
||||||
BPoint *ptList = new(nothrow) BPoint[ptCount];
|
BPoint *ptList = new(nothrow) BPoint[ptCount];
|
||||||
if (link.Read(opList, opCount * sizeof(uint32)) >= B_OK &&
|
if (opList != NULL && ptList != NULL
|
||||||
link.Read(ptList, ptCount * sizeof(BPoint)) >= B_OK) {
|
&& link.Read(opList, opCount * sizeof(uint32)) >= B_OK
|
||||||
|
&& link.Read(ptList, ptCount * sizeof(BPoint)) >= B_OK) {
|
||||||
|
|
||||||
picture->BeginOp(code == AS_FILL_SHAPE ? B_PIC_FILL_SHAPE : B_PIC_STROKE_SHAPE);
|
picture->BeginOp(code == AS_FILL_SHAPE ? B_PIC_FILL_SHAPE : B_PIC_STROKE_SHAPE);
|
||||||
picture->AddRect(shapeFrame);
|
|
||||||
picture->AddInt32(opCount);
|
picture->AddInt32(opCount);
|
||||||
picture->AddInt32(ptCount);
|
|
||||||
picture->AddData(opList, opCount * sizeof(uint32));
|
picture->AddData(opList, opCount * sizeof(uint32));
|
||||||
|
picture->AddInt32(ptCount);
|
||||||
picture->AddData(ptList, ptCount * sizeof(BPoint));
|
picture->AddData(ptList, ptCount * sizeof(BPoint));
|
||||||
picture->EndOp();
|
picture->EndOp();
|
||||||
}
|
}
|
||||||
@@ -2579,6 +2583,7 @@ ServerWindow::_DispatchPictureMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
picture->AddInt32(bitmap->BytesPerRow());
|
picture->AddInt32(bitmap->BytesPerRow());
|
||||||
picture->AddInt32(bitmap->ColorSpace());
|
picture->AddInt32(bitmap->ColorSpace());
|
||||||
picture->AddInt32(/*bitmap->Flags()*/0);
|
picture->AddInt32(/*bitmap->Flags()*/0);
|
||||||
|
picture->AddInt32(bitmap->BitsLength());
|
||||||
picture->AddData((void *)bitmap->Bits(), bitmap->BitsLength());
|
picture->AddData((void *)bitmap->Bits(), bitmap->BitsLength());
|
||||||
picture->EndOp();
|
picture->EndOp();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user