/* * Copyright 2006, Haiku Inc. * Distributed under the terms of the MIT License. * * Authors: * Stefano Ceccherini (burton666@libero.it) */ #ifndef __PICTUREDATAWRITER_H #define __PICTUREDATAWRITER_H #include #include #include #include class BPositionIO; class PictureDataWriter { public: PictureDataWriter(); PictureDataWriter(BPositionIO *data); status_t SetTo(BPositionIO *data); status_t WriteSetOrigin(const BPoint &point); status_t WriteInvertRect(const BRect &rect); status_t WriteSetDrawingMode(const drawing_mode &mode); status_t WriteSetPenSize(const float &penSize); status_t WriteSetLineMode(const cap_mode &cap, const join_mode &join, const float &miterLimit); status_t WriteSetScale(const float &scale); status_t WriteDrawRect(const BRect &rect, const bool &fill); status_t WriteDrawRoundRect(const BRect &rect, const BPoint &radius, const bool &fill); status_t WriteDrawEllipse(const BRect &rect, const bool &fill); status_t WriteDrawArc(const BPoint ¢er, const BPoint &radius, const float &startTheta, const float &arcTheta, const bool &fill); status_t WriteStrokeLine(const BPoint &start, const BPoint &end); status_t WriteSetHighColor(const rgb_color &color); status_t WriteSetLowColor(const rgb_color &color); status_t WriteDrawString(const BPoint &where, const char *string, const int32 &length, const escapement_delta &delta); status_t WriteDrawShape(const int32 &opCount, const void *opList, const int32 &ptCount, const void *ptList, const bool &fill); status_t WriteDrawBitmap(const BRect &srcRect, const BRect &dstRect, const int32 &width, const int32 &height, const int32 &bytesPerRow, const int32 &colorSpace, const int32 &flags, const void *data, const int32 &length); status_t WriteSetFontFamily(const font_family &family); status_t WriteSetFontStyle(const font_style &style); status_t WriteSetFontSpacing(const int32 &spacing); status_t WriteSetFontSize(const float &size); status_t WriteSetFontRotation(const float &rotation); status_t WriteSetFontEncoding(const int32 &encoding); status_t WriteSetFontFlags(const int32 &flags); status_t WriteSetFontShear(const int32 &shear); status_t WriteSetFontFace(const int32 &face); status_t WritePushState(); status_t WritePopState(); protected: status_t WriteData(const void *data, size_t size); template status_t Write(const T &data) { return WriteData(&data, sizeof(data)); } status_t BeginOp(const int16 &op); status_t EndOp(); private: BPositionIO *fData; std::stack fStack; }; #endif // __PICTUREDATAWRITER_H