Added some direct-buffer acces functions to DisplayDriver
Slight ServerFont tweak git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6476 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
f856b083a7
commit
871efa51a3
@ -42,9 +42,11 @@
|
|||||||
#include <Region.h>
|
#include <Region.h>
|
||||||
#include "PatternHandler.h"
|
#include "PatternHandler.h"
|
||||||
#include "LayerData.h"
|
#include "LayerData.h"
|
||||||
|
#include "ServerBitmap.h"
|
||||||
|
#include <ft2build.h>
|
||||||
|
#include FT_FREETYPE_H
|
||||||
|
|
||||||
class ServerCursor;
|
class ServerCursor;
|
||||||
class ServerBitmap;
|
|
||||||
|
|
||||||
#ifndef ROUND
|
#ifndef ROUND
|
||||||
#define ROUND(a) ( (long)(a+.5) )
|
#define ROUND(a) ( (long)(a+.5) )
|
||||||
@ -116,6 +118,22 @@ private:
|
|||||||
float maxy;
|
float maxy;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class FBBitmap DisplayDriver.h
|
||||||
|
\brief Class used for easily passing around information about the framebuffer
|
||||||
|
*/
|
||||||
|
class FBBitmap : public ServerBitmap
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FBBitmap(void) : ServerBitmap(BRect(0,0,0,0),B_NO_COLOR_SPACE,0) { }
|
||||||
|
~FBBitmap(void) { }
|
||||||
|
void SetBytesPerRow(const int32 &bpr) { _bytesperrow=bpr; }
|
||||||
|
void SetSpace(const color_space &space) { _space=space; }
|
||||||
|
void SetSize(const int32 &w, const int32 &h) { _width=w; _height=h; }
|
||||||
|
void SetBuffer(void *ptr) { _buffer=(uint8*)ptr; }
|
||||||
|
void SetBitsPerPixel(color_space space,int32 bytesperline) { _HandleSpace(space,bytesperline); }
|
||||||
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class DisplayDriver DisplayDriver.h
|
\class DisplayDriver DisplayDriver.h
|
||||||
\brief Mostly abstract class which handles all graphics output for the server.
|
\brief Mostly abstract class which handles all graphics output for the server.
|
||||||
@ -248,6 +266,16 @@ protected:
|
|||||||
// virtual void FillPatternRect(int32 left, int32 top, int32 right, int32 bottom);
|
// virtual void FillPatternRect(int32 left, int32 top, int32 right, int32 bottom);
|
||||||
virtual void SetThickPatternPixel(int x, int y);
|
virtual void SetThickPatternPixel(int x, int y);
|
||||||
|
|
||||||
|
// Blit functions specific to FreeType2 glyph copying. These probably could be replaced with
|
||||||
|
// more generic functions, but these are written and can be replaced later.
|
||||||
|
void BlitMono2RGB32(FT_Bitmap *src, const BPoint &pt, const DrawData *d);
|
||||||
|
void BlitGray2RGB32(FT_Bitmap *src, const BPoint &pt, const DrawData *d);
|
||||||
|
|
||||||
|
// Two functions for gaining direct access to the framebuffer of a child class. This removes the need
|
||||||
|
// for a set of glyph-blitting virtual functions for each driver.
|
||||||
|
virtual bool AcquireBuffer(FBBitmap *bmp);
|
||||||
|
virtual void ReleaseBuffer(void);
|
||||||
|
|
||||||
void FillArc(const BRect &r, const float &angle, const float &span, DisplayDriver*, SetHorizontalLineFuncType setLine);
|
void FillArc(const BRect &r, const float &angle, const float &span, DisplayDriver*, SetHorizontalLineFuncType setLine);
|
||||||
void FillBezier(BPoint *pts, DisplayDriver* driver, SetHorizontalLineFuncType setLine);
|
void FillBezier(BPoint *pts, DisplayDriver* driver, SetHorizontalLineFuncType setLine);
|
||||||
void FillEllipse(const BRect &r, DisplayDriver* driver, SetHorizontalLineFuncType setLine);
|
void FillEllipse(const BRect &r, DisplayDriver* driver, SetHorizontalLineFuncType setLine);
|
||||||
|
@ -40,19 +40,19 @@ public:
|
|||||||
uint16 flags=0, uint8 spacing=B_CHAR_SPACING);
|
uint16 flags=0, uint8 spacing=B_CHAR_SPACING);
|
||||||
ServerFont(const ServerFont &font);
|
ServerFont(const ServerFont &font);
|
||||||
~ServerFont(void);
|
~ServerFont(void);
|
||||||
font_direction Direction(void) { return fdirection; }
|
font_direction Direction(void) const { return fdirection; }
|
||||||
uint32 Encoding(void) { return fencoding; }
|
uint32 Encoding(void) const { return fencoding; }
|
||||||
edge_info Edges(void) { return fedges; }
|
edge_info Edges(void) const { return fedges; }
|
||||||
uint32 Flags(void) { return fflags; }
|
uint32 Flags(void) const { return fflags; }
|
||||||
uint32 Spacing(void) { return fspacing; }
|
uint32 Spacing(void) const { return fspacing; }
|
||||||
float Shear(void) { return fshear; }
|
float Shear(void) const { return fshear; }
|
||||||
float Rotation(void) { return frotation; }
|
float Rotation(void) const { return frotation; }
|
||||||
float Size(void) { return fsize; }
|
float Size(void) const { return fsize; }
|
||||||
uint32 Face(void) { return fface; }
|
uint32 Face(void) const { return fface; }
|
||||||
uint32 CountGlyphs(void);
|
uint32 CountGlyphs(void);
|
||||||
int32 CountTuned(void);
|
int32 CountTuned(void);
|
||||||
font_file_format FileFormat(void);
|
font_file_format FileFormat(void);
|
||||||
FontStyle *Style(void) { return fstyle; }
|
FontStyle *Style(void) const { return fstyle; }
|
||||||
|
|
||||||
void SetDirection(const font_direction &dir) { fdirection=dir; }
|
void SetDirection(const font_direction &dir) { fdirection=dir; }
|
||||||
void SetEdges(const edge_info &info) { fedges=info; }
|
void SetEdges(const edge_info &info) { fedges=info; }
|
||||||
@ -68,6 +68,7 @@ public:
|
|||||||
void Height(font_height *fh);
|
void Height(font_height *fh);
|
||||||
|
|
||||||
ServerFont &operator=(const ServerFont& font);
|
ServerFont &operator=(const ServerFont& font);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class FontStyle;
|
friend class FontStyle;
|
||||||
FontStyle *fstyle;
|
FontStyle *fstyle;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user