Fresco/Berlin/modules/Drawing/libArt DrawingKit.cc,1.50,1.51 DrawingKit.hh,1.31,1.32
Tobias Hunger <[email protected]> Mon, 29 Dec 2003 09:12:23 +0100
| Newsgroups | gmane.comp.video.fresco.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvs/fresco/Fresco/Berlin/modules/Drawing/libArt
In directory purcel:/tmp/cvs-serv30213/modules/Drawing/libArt
Modified Files:
DrawingKit.cc DrawingKit.hh
Log Message:
* Styleguidify Berlin
* Add namespace Berlin
Both patches are mixed into one since I did not want to commit two such
large and disruptive patches.
Index: DrawingKit.cc
===================================================================
RCS file: /cvs/fresco/Fresco/Berlin/modules/Drawing/libArt/DrawingKit.cc,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -d -r1.50 -r1.51
--- DrawingKit.cc 27 May 2003 23:12:45 -0000 1.50
+++ DrawingKit.cc 29 Dec 2003 08:03:23 -0000 1.51
@@ -46,523 +46,554 @@
using namespace Fresco;
using namespace Berlin::DrawingKit;
-libArt::DrawingKit::~DrawingKit() {}
+libArt::DrawingKit::~DrawingKit() { }
libArt::DrawingKit::DrawingKit(const std::string &id,
const Fresco::Kit::PropertySeq &p,
- ServerContextImpl *c)
- : KitImpl(id, p, c),
- _drawable(0),
- _xres(1.),
- _yres(1.),
- _font(0),
- _unifont(0),
- _rasters(500)
- // textures(100),
- // tx(0)
+ ServerContextImpl *c) :
+ KitImpl(id, p, c),
+ my_drawable(0),
+ my_xres(1.),
+ my_yres(1.),
+ my_font(0),
+ my_unifont(0),
+ my_rasters(500)
+ // textures(100),
+ // tx(0)
{
- _lt.red = 1.0; _lt.green = 1.0; _lt.blue = 1.0; _lt.alpha = 1.0;
- _fg.red = 1.0; _fg.green = 1.0; _fg.blue = 1.0; _fg.alpha = 1.0;
+ my_lt.red = 1.0; my_lt.green = 1.0; my_lt.blue = 1.0;
+ my_lt.alpha = 1.0;
+ my_fg.red = 1.0; my_fg.green = 1.0; my_fg.blue = 1.0;
+ my_fg.alpha = 1.0;
}
-KitImpl *libArt::DrawingKit::clone(const Fresco::Kit::PropertySeq &p,
- ServerContextImpl *c)
+Berlin::KitImpl *
+libArt::DrawingKit::clone(const Fresco::Kit::PropertySeq &p,
+ ServerContextImpl *c)
{
- libArt::DrawingKit *kit = new libArt::DrawingKit(repo_id(), p, c);
- kit->init();
- return kit;
+ libArt::DrawingKit *kit = new libArt::DrawingKit(repo_id(), p, c);
+ kit->init();
+ return kit;
}
void libArt::DrawingKit::init()
{
- Console *console = Console::instance();
- _drawable = console->drawable();
- _xres = _drawable->resolution(xaxis);
- _yres = _drawable->resolution(yaxis);
- _font = new FTFont(_xres, _yres);
- _unifont = new Unifont(_xres, _yres);
- _screen.x0 = 0;
- _screen.y0 = 0;
- _screen.x1 = _drawable->width();
- _screen.y1 = _drawable->height();
+ Console *console = Console::instance();
+ my_drawable = console->drawable();
+ my_xres = my_drawable->resolution(xaxis);
+ my_yres = my_drawable->resolution(yaxis);
+ my_font = new FTFont(my_xres, my_yres);
+ my_unifont = new Unifont(my_xres, my_yres);
+ my_screen.x0 = 0;
+ my_screen.y0 = 0;
+ my_screen.x1 = my_drawable->width();
+ my_screen.y1 = my_drawable->height();
- _agam = art_alphagamma_new (2.5);
- _buffer = console->create_drawable(_drawable->width(), _drawable->height(), 3);
- _renderer = console->get_extension<Renderer>("Renderer");
- _renderer->attach(_buffer);
- _direct = console->get_extension<DirectBuffer>("DirectBuffer");
- _direct->attach(_buffer);
- _bbox.x0 = _bbox.y0 = _bbox.x1 = _bbox.y1 = 0;
- double step = 1. / 256.;
- for (int i = 0; i < 256; ++i)
- for (int j = 0; j < 256; ++j)
- _alphabank[i][j] = (art_u8)(i * (j * step));
+ my_agam = art_alphagamma_new(2.5);
+ my_buffer = console->create_drawable(my_drawable->width(),
+ my_drawable->height(), 3);
+ my_renderer =
+ console->get_extension<Console_Extension::Renderer>("Renderer");
+ my_renderer->attach(my_buffer);
+ my_direct = console->
+ get_extension<Console_Extension::DirectBuffer>("DirectBuffer");
+ my_direct->attach(my_buffer);
+ my_bbox.x0 = my_bbox.y0 = my_bbox.x1 = my_bbox.y1 = 0;
+ double step = 1. / 256.;
+ for (int i = 0; i < 256; ++i)
+ for (int j = 0; j < 256; ++j)
+ my_alphabank[i][j] = (art_u8)(i * (j * step));
}
namespace
{
-inline art_u32 artColor(const Color &c)
-{
- return (((art_u8)(c.blue * 0xff) << 24) |
- ((art_u8)(c.green * 0xff) << 16) |
- ((art_u8)(c.red * 0xff) << 8) |
- ((art_u8)(c.alpha * 0xff)));
-}
+ inline art_u32 artColor(const Color &c)
+ {
+ return (((art_u8)(c.blue * 0xff) << 24) |
+ ((art_u8)(c.green * 0xff) << 16) |
+ ((art_u8)(c.red * 0xff) << 8) |
+ ((art_u8)(c.alpha * 0xff)));
+ }
-inline void fix_order_of_irect(ArtIRect &ir)
-{
- if (ir.x0 > ir.x1) {int tmp = ir.x0; ir.x1 = ir.x0; ir.x0 = tmp;}
- if (ir.y0 > ir.y1) {int tmp = ir.y0; ir.y0 = ir.y1; ir.y1 = tmp;}
-}
-};
+ inline void fix_order_of_irect(ArtIRect &ir)
+ {
+ if (ir.x0 > ir.x1) {int tmp = ir.x0; ir.x1 = ir.x0; ir.x0 = tmp;}
+ if (ir.y0 > ir.y1) {int tmp = ir.y0; ir.y0 = ir.y1; ir.y1 = tmp;}
+ }
+} // namespace
void libArt::DrawingKit::set_transformation(Transform_ptr t)
{
- Prague::Trace trace("libArt::DrawingKit::set_transformation");
- if (CORBA::is_nil(t)) art_affine_identity(_affine);
- else
+ Prague::Trace trace("libArt::DrawingKit::set_transformation");
+ if (CORBA::is_nil(t)) art_affine_identity(my_affine);
+ else
{
- _tr = Transform::_duplicate(t);
- Transform::Matrix matrix;
- _tr->store_matrix(matrix);
- _affine[0] = matrix[0][0];
- _affine[1] = matrix[1][0];
- _affine[2] = matrix[0][1];
- _affine[3] = matrix[1][1];
- _affine[4] = matrix[0][3];
- _affine[5] = matrix[1][3];
+ my_tr = Transform::_duplicate(t);
+ Transform::Matrix matrix;
+ my_tr->store_matrix(matrix);
+ my_affine[0] = matrix[0][0];
+ my_affine[1] = matrix[1][0];
+ my_affine[2] = matrix[0][1];
+ my_affine[3] = matrix[1][1];
+ my_affine[4] = matrix[0][3];
+ my_affine[5] = matrix[1][3];
}
- _scaled_affine[0] = _affine[0] * _xres;
- _scaled_affine[1] = _affine[1] * _xres;
- _scaled_affine[2] = _affine[2] * _yres;
- _scaled_affine[3] = _affine[3] * _yres;
- _scaled_affine[4] = _affine[4] * _xres;
- _scaled_affine[5] = _affine[5] * _yres;
+ my_scaled_affine[0] = my_affine[0] * my_xres;
+ my_scaled_affine[1] = my_affine[1] * my_xres;
+ my_scaled_affine[2] = my_affine[2] * my_yres;
+ my_scaled_affine[3] = my_affine[3] * my_yres;
+ my_scaled_affine[4] = my_affine[4] * my_xres;
+ my_scaled_affine[5] = my_affine[5] * my_yres;
}
void libArt::DrawingKit::set_clipping(Region_ptr r)
{
- if (CORBA::is_nil(r)) {_clip = _screen; return;}
- _cl = Region::_duplicate(r);
+ if (CORBA::is_nil(r))
+ {
+ my_clip = my_screen;
+ return;
+ }
+ my_cl = Region::_duplicate(r);
- Lease_var<RegionImpl> climpl(Provider<RegionImpl>::provide());
- climpl->copy(_cl);
+ Lease_var<RegionImpl> climpl(Provider<RegionImpl>::provide());
+ climpl->copy(my_cl);
- ArtDRect dclip = {climpl->lower.x * _xres, climpl->lower.y * _yres,
- climpl->upper.x * _xres, climpl->upper.y * _yres};
- art_drect_to_irect(&_clip, &dclip);
- art_irect_intersect(&_clip, &_clip, &_screen);
+ ArtDRect dclip = {climpl->lower.x * my_xres,
+ climpl->lower.y * my_yres,
+ climpl->upper.x * my_xres,
+ climpl->upper.y * my_yres};
+ art_drect_to_irect(&my_clip, &dclip);
+ art_irect_intersect(&my_clip, &my_clip, &my_screen);
}
void libArt::DrawingKit::set_foreground(const Color &c)
{
- _fg = c;
- _con_fg.red = _fg.red * _lt.red;
- _con_fg.green = _fg.green * _lt.green;
- _con_fg.blue = _fg.blue * _lt.blue;
- _con_fg.alpha = _fg.alpha;
- _art_fg = artColor(_con_fg);
+ my_fg = c;
+ my_con_fg.red = my_fg.red * my_lt.red;
+ my_con_fg.green = my_fg.green * my_lt.green;
+ my_con_fg.blue = my_fg.blue * my_lt.blue;
+ my_con_fg.alpha = my_fg.alpha;
+ my_art_fg = artColor(my_con_fg);
}
void libArt::DrawingKit::set_lighting(const Color &c)
{
- _lt = c;
- _con_fg.red = _fg.red * _lt.red;
- _con_fg.green = _fg.green * _lt.green;
- _con_fg.blue = _fg.blue * _lt.blue;
- _art_fg = artColor(_con_fg);
+ my_lt = c;
+ my_con_fg.red = my_fg.red * my_lt.red;
+ my_con_fg.green = my_fg.green * my_lt.green;
+ my_con_fg.blue = my_fg.blue * my_lt.blue;
+ my_art_fg = artColor(my_con_fg);
}
-void libArt::DrawingKit::set_point_size(Coord s) { _ps = s;}
-void libArt::DrawingKit::set_line_width(Coord w) { _lw = w;}
-void libArt::DrawingKit::set_line_endstyle(Fresco::DrawingKit::Endstyle style) { _es = style;}
-void libArt::DrawingKit::set_surface_fillstyle(Fresco::DrawingKit::Fillstyle style) { _fs = style;}
-void libArt::DrawingKit::set_texture(Raster_ptr t) {}
-void libArt::DrawingKit::set_font_size(CORBA::ULong) {}
-void libArt::DrawingKit::set_font_weight(CORBA::ULong) {}
-void libArt::DrawingKit::set_font_family(const Unistring&) {}
-void libArt::DrawingKit::set_font_subfamily(const Unistring&) {}
-void libArt::DrawingKit::set_font_fullname(const Unistring&) {}
-void libArt::DrawingKit::set_font_style(const Unistring&) {}
-void libArt::DrawingKit::set_font_attribute(const NVPair & nvp) {}
+void libArt::DrawingKit::set_point_size(Coord s) { my_ps = s; }
+void libArt::DrawingKit::set_line_width(Coord w) { my_lw = w; }
+void libArt::DrawingKit::set_line_endstyle(Fresco::DrawingKit::Endstyle style)
+{ my_es = style; }
+void libArt::DrawingKit::set_surface_fillstyle(Fresco::DrawingKit::Fillstyle style)
+{ my_fs = style; }
+void libArt::DrawingKit::set_texture(Raster_ptr t) { }
+void libArt::DrawingKit::set_font_size(CORBA::ULong) { }
+void libArt::DrawingKit::set_font_weight(CORBA::ULong) { }
+void libArt::DrawingKit::set_font_family(const Unistring&) { }
+void libArt::DrawingKit::set_font_subfamily(const Unistring&) { }
+void libArt::DrawingKit::set_font_fullname(const Unistring&) { }
+void libArt::DrawingKit::set_font_style(const Unistring&) { }
+void libArt::DrawingKit::set_font_attribute(const NVPair & nvp) { }
void libArt::DrawingKit::draw_path(const Path &p)
{
- int len = p.nodes.length();
- ArtVpath vpath[_fs == Fresco::DrawingKit::outlined ? len : len + 1];
- ArtVpath *tvpath;
+ int len = p.nodes.length();
+ ArtVpath vpath[my_fs == Fresco::DrawingKit::outlined ? len : len + 1];
+ ArtVpath *tvpath;
- if (_fs == Fresco::DrawingKit::outlined)
+ if (my_fs == Fresco::DrawingKit::outlined)
{
- for (int i = 0; i < len; ++i)
+ for (int i = 0; i < len; ++i)
{
- vpath[i].x = p.nodes[i].x;
- vpath[i].y = p.nodes[i].y;
- vpath[i].code = ART_LINETO;
+ vpath[i].x = p.nodes[i].x;
+ vpath[i].y = p.nodes[i].y;
+ vpath[i].code = ART_LINETO;
}
- vpath[0].code = ART_MOVETO_OPEN;
- vpath[len-1].code = ART_END;
+ vpath[0].code = ART_MOVETO_OPEN;
+ vpath[len-1].code = ART_END;
}
- else
+ else
{
- for (int i = 0; i < len; ++i)
+ for (int i = 0; i < len; ++i)
{
- vpath[i].x = p.nodes[i].x;
- vpath[i].y = p.nodes[i].y;
- vpath[i].code = ART_LINETO;
+ vpath[i].x = p.nodes[i].x;
+ vpath[i].y = p.nodes[i].y;
+ vpath[i].code = ART_LINETO;
}
- vpath[0].code = ART_MOVETO;
- vpath[len].x = vpath[0].x;
- vpath[len].y = vpath[0].y;
- vpath[len].code = ART_END;
+ vpath[0].code = ART_MOVETO;
+ vpath[len].x = vpath[0].x;
+ vpath[len].y = vpath[0].y;
+ vpath[len].code = ART_END;
}
-
- ArtDRect locd; ArtIRect loc;
- tvpath = art_vpath_affine_transform(vpath, _scaled_affine);
- ArtSVP *svp1 = art_svp_from_vpath(tvpath);
- ArtSVP *svp2 = art_svp_uncross(svp1);
- ArtSVP *svp = art_svp_rewind_uncrossed(svp2, ART_WIND_RULE_ODDEVEN);
+
+ ArtDRect locd; ArtIRect loc;
+ tvpath = art_vpath_affine_transform(vpath, my_scaled_affine);
+ ArtSVP *svp1 = art_svp_from_vpath(tvpath);
+ ArtSVP *svp2 = art_svp_uncross(svp1);
+ ArtSVP *svp = art_svp_rewind_uncrossed(svp2, ART_WIND_RULE_ODDEVEN);
- art_drect_svp(&locd, svp);
- art_drect_to_irect(&loc, &locd);
- art_irect_intersect(&loc, &loc ,&_clip);
- art_irect_union(&_bbox, &_bbox, &loc);
- fix_order_of_irect(loc);
- DirectBuffer::Guard pb_buf = _direct->write_buffer();
- ArtPixBuf * pb = art_pixbuf_new_const_rgb ((art_u8 *)(pb_buf.get()),
- _drawable->width(),
- _drawable->height(),
- _buffer->row_length());
- art_rgb_svp_alpha(svp, loc.x0, loc.y0, loc.x1, loc.y1, _art_fg,
- (art_u8 *)(pb_buf.get()) +
- (loc.y0 * pb->rowstride) +
- (loc.x0 * 3),
- _buffer->row_length(), _agam);
- art_svp_free(svp);
- art_svp_free(svp1);
- art_svp_free(svp2);
+ art_drect_svp(&locd, svp);
+ art_drect_to_irect(&loc, &locd);
+ art_irect_intersect(&loc, &loc ,&my_clip);
+ art_irect_union(&my_bbox, &my_bbox, &loc);
+ fix_order_of_irect(loc);
+ Console_Extension::DirectBuffer::Guard pb_buf =
+ my_direct->write_buffer();
+ ArtPixBuf * pb = art_pixbuf_new_const_rgb ((art_u8 *)(pb_buf.get()),
+ my_drawable->width(),
+ my_drawable->height(),
+ my_buffer->row_length());
+ art_rgb_svp_alpha(svp, loc.x0, loc.y0, loc.x1, loc.y1, my_art_fg,
+ (art_u8 *)(pb_buf.get()) +
+ (loc.y0 * pb->rowstride) +
+ (loc.x0 * 3),
+ my_buffer->row_length(), my_agam);
+ art_svp_free(svp);
+ art_svp_free(svp1);
+ art_svp_free(svp2);
}
-void libArt::DrawingKit::draw_new_path(const NewPath &p)
-{
-}
+void libArt::DrawingKit::draw_new_path(const NewPath &p) { }
//void libArt;;DrawingKit::drawPatch(const Patch &);
-void libArt::DrawingKit::draw_rectangle(const Vertex &bot, const Vertex &top)
+void libArt::DrawingKit::draw_rectangle(const Vertex &bot,
+ const Vertex &top)
{
- // fast path opaque non-transformed rectangles
- if (_fg.alpha == 1. &&
- _affine[0] == 1 &&
- _affine[1] == 0 &&
- _affine[2] == 0 &&
- _affine[3] == 1)
+ // fast path opaque non-transformed rectangles
+ if (my_fg.alpha == 1. &&
+ my_affine[0] == 1 &&
+ my_affine[1] == 0 &&
+ my_affine[2] == 0 &&
+ my_affine[3] == 1)
{
- ArtIRect rect;
- rect.x0 = (int)((bot.x + _affine[4]) * _xres);
- rect.x1 = (int)((top.x + _affine[4])* _xres);
- rect.y0 = (int)((bot.y + _affine[5]) * _yres);
- rect.y1 = (int)((top.y + _affine[5]) * _yres);
- art_irect_intersect(&rect, &rect, &_clip);
- int width = (rect.x1 - rect.x0);
- int height = (rect.y1 - rect.y0);
- if ((height * width) < 1) return;
- _renderer->set_color(_con_fg);
- if (_fs == Fresco::DrawingKit::solid)
- _renderer->draw_box(rect.x0, rect.y0, width, height);
- else
+ ArtIRect rect;
+ rect.x0 = (int)((bot.x + my_affine[4]) * my_xres);
+ rect.x1 = (int)((top.x + my_affine[4])* my_xres);
+ rect.y0 = (int)((bot.y + my_affine[5]) * my_yres);
+ rect.y1 = (int)((top.y + my_affine[5]) * my_yres);
+ art_irect_intersect(&rect, &rect, &my_clip);
+ int width = (rect.x1 - rect.x0);
+ int height = (rect.y1 - rect.y0);
+ if ((height * width) < 1) return;
+ my_renderer->set_color(my_con_fg);
+ if (my_fs == Fresco::DrawingKit::solid)
+ my_renderer->draw_box(rect.x0, rect.y0, width, height);
+ else
{
- _renderer->draw_hline(rect.x0, rect.y0, width);
- _renderer->draw_hline(rect.x0, rect.y1, width);
- _renderer->draw_vline(rect.x0, rect.y0, height);
- _renderer->draw_vline(rect.x1, rect.y0, height);
+ my_renderer->draw_hline(rect.x0, rect.y0, width);
+ my_renderer->draw_hline(rect.x0, rect.y1, width);
+ my_renderer->draw_vline(rect.x0, rect.y0, height);
+ my_renderer->draw_vline(rect.x1, rect.y0, height);
}
- art_irect_union (&_bbox, &_bbox, &rect);
- return;
-
- // non-degenerate rectangles
+ art_irect_union (&my_bbox, &my_bbox, &rect);
+ return;
+
+ // non-degenerate rectangles
}
- else
+ else
{
- Path path;
- if (_fs == Fresco::DrawingKit::outlined)
+ Path path;
+ if (my_fs == Fresco::DrawingKit::outlined)
{
- path.nodes.length(4);
- path.nodes[0].x = bot.x, path.nodes[0].y = bot.y;
- path.nodes[1].x = top.x, path.nodes[1].y = bot.y;
- path.nodes[2].x = top.x, path.nodes[2].y = top.y;
- path.nodes[3].x = bot.x, path.nodes[2].y = top.y;
- path.shape = convex;
+ path.nodes.length(4);
+ path.nodes[0].x = bot.x, path.nodes[0].y = bot.y;
+ path.nodes[1].x = top.x, path.nodes[1].y = bot.y;
+ path.nodes[2].x = top.x, path.nodes[2].y = top.y;
+ path.nodes[3].x = bot.x, path.nodes[2].y = top.y;
+ path.shape = convex;
}
- else
+ else
{
- path.nodes.length(5);
- path.nodes[0].x = bot.x, path.nodes[0].y = bot.y;
- path.nodes[1].x = top.x, path.nodes[1].y = bot.y;
- path.nodes[2].x = top.x, path.nodes[2].y = top.y;
- path.nodes[3].x = bot.x, path.nodes[3].y = top.y;
- path.nodes[4].x = bot.x, path.nodes[4].y = bot.y;
- path.shape = convex;
+ path.nodes.length(5);
+ path.nodes[0].x = bot.x, path.nodes[0].y = bot.y;
+ path.nodes[1].x = top.x, path.nodes[1].y = bot.y;
+ path.nodes[2].x = top.x, path.nodes[2].y = top.y;
+ path.nodes[3].x = bot.x, path.nodes[3].y = top.y;
+ path.nodes[4].x = bot.x, path.nodes[4].y = bot.y;
+ path.shape = convex;
}
- draw_path(static_cast<const Path>(path));
+ draw_path(static_cast<const Path>(path));
}
}
void libArt::DrawingKit::draw_quadric(const Fresco::DrawingKit::Quadric,
- Fresco::Coord, Fresco::Coord)
-{
-}
+ Fresco::Coord, Fresco::Coord) { }
-void libArt::DrawingKit::draw_ellipse(const Vertex &, const Vertex &) {}
+void libArt::DrawingKit::draw_ellipse(const Vertex &, const Vertex &) { }
void libArt::DrawingKit::draw_image(Raster_ptr remote)
{
- rasterize_pixbuf(_rasters.lookup(Fresco::Raster::_duplicate(remote))->pixbuf);
+ rasterize_pixbuf(my_rasters.lookup(Fresco::Raster::_duplicate(remote))->pixbuf);
}
void libArt::DrawingKit::identity_pixbuf(ArtPixBuf *pixbuf)
{
- // fast path for non-transformed grey-scale glyph images
- ArtIRect rect;
- rect.x0 = (int)(_affine[4] * _xres);
- rect.x1 = rect.x0 + pixbuf->width;
- rect.y0 = (int)(_affine[5] * _yres);
- rect.y1 = rect.y0 + pixbuf->height;
+ // fast path for non-transformed grey-scale glyph images
+ ArtIRect rect;
+ rect.x0 = (int)(my_affine[4] * my_xres);
+ rect.x1 = rect.x0 + pixbuf->width;
+ rect.y0 = (int)(my_affine[5] * my_yres);
+ rect.y1 = rect.y0 + pixbuf->height;
- // work out offset within source image
- int dx = _clip.x0 - rect.x0;
- int dy = _clip.y0 - rect.y0;
- if (dx < 0) dx = 0;
- if (dy < 0) dy = 0;
-
- art_irect_intersect(&rect, &rect, &_clip);
- if (((rect.y1 - rect.y0) * (rect.x1 - rect.x0)) < 1) return;
- DirectBuffer::Guard pb_buf = _direct->write_buffer();
- ArtPixBuf * pb = art_pixbuf_new_const_rgb ((art_u8 *)(pb_buf.get()),
- _drawable->width(),
- _drawable->height(),
- _buffer->row_length());
- art_u8 *dst = pb->pixels + rect.y0 * pb->rowstride + rect.x0 * 3;
- art_u8 *src = pixbuf->pixels + dy * pixbuf->rowstride + dx;
- int width = (rect.x1 - rect.x0);
- int height = (rect.y1 - rect.y0);
- art_u8 *atab = _alphabank[(art_u8)(_art_fg & 0xff)];
- art_u8 *rtab = _alphabank[(art_u8)((_art_fg >> 24) & 0xff)];
- art_u8 *gtab = _alphabank[(art_u8)((_art_fg >> 16) & 0xff)];
- art_u8 *btab = _alphabank[(art_u8)((_art_fg >> 8) & 0xff)];
+ // work out offset within source image
+ int dx = my_clip.x0 - rect.x0;
+ int dy = my_clip.y0 - rect.y0;
+ if (dx < 0) dx = 0;
+ if (dy < 0) dy = 0;
- int t;
- int dst_skip = pb->rowstride - width * 3;
- int src_skip = pixbuf->rowstride - width;
- art_u8 *ptab;
+ art_irect_intersect(&rect, &rect, &my_clip);
+ if (((rect.y1 - rect.y0) * (rect.x1 - rect.x0)) < 1) return;
+ Console_Extension::DirectBuffer::Guard pb_buf =
+ my_direct->write_buffer();
+ ArtPixBuf * pb = art_pixbuf_new_const_rgb ((art_u8 *)(pb_buf.get()),
+ my_drawable->width(),
+ my_drawable->height(),
+ my_buffer->row_length());
+ art_u8 *dst = pb->pixels + rect.y0 * pb->rowstride + rect.x0 * 3;
+ art_u8 *src = pixbuf->pixels + dy * pixbuf->rowstride + dx;
+ int width = (rect.x1 - rect.x0);
+ int height = (rect.y1 - rect.y0);
+ art_u8 *atab = my_alphabank[(art_u8)(my_art_fg & 0xff)];
+ art_u8 *rtab = my_alphabank[(art_u8)((my_art_fg >> 24) & 0xff)];
+ art_u8 *gtab = my_alphabank[(art_u8)((my_art_fg >> 16) & 0xff)];
+ art_u8 *btab = my_alphabank[(art_u8)((my_art_fg >> 8) & 0xff)];
+ int t;
+ int dst_skip = pb->rowstride - width * 3;
+ int src_skip = pixbuf->rowstride - width;
+ art_u8 *ptab;
- for (int row = 0; row < height; ++row, dst += dst_skip, src += src_skip)
- for (int col = 0; col < width; ++col, dst += 3, ++src)
- {
- ptab = _alphabank[*src];
- dst[0] = t = dst[0] + atab[rtab[*src]] - atab[ptab[dst[0]]];
- t &= 0x100; t >>= 8; t -= 1; t =~ t; dst[0] |= (t & 0xff);
- dst[1] = t = dst[1] + atab[gtab[*src]] - atab[ptab[dst[1]]];
- t &= 0x100; t >>= 8; t -= 1; t =~ t; dst[1] |= (t & 0xff);
- dst[2] = t = dst[2] + atab[btab[*src]] - atab[ptab[dst[2]]];
- t &= 0x100; t >>= 8; t -= 1; t =~ t; dst[2] |= (t & 0xff);
- }
- art_irect_union (&_bbox, &_bbox, &rect);
+ for (int row = 0;
+ row < height;
+ ++row, dst += dst_skip, src += src_skip)
+ for (int col = 0;
+ col < width;
+ ++col, dst += 3, ++src)
+ {
+ ptab = my_alphabank[*src];
+ dst[0] = t = dst[0] + atab[rtab[*src]] - atab[ptab[dst[0]]];
+ t &= 0x100; t >>= 8; t -= 1; t =~ t; dst[0] |= (t & 0xff);
+ dst[1] = t = dst[1] + atab[gtab[*src]] - atab[ptab[dst[1]]];
+ t &= 0x100; t >>= 8; t -= 1; t =~ t; dst[1] |= (t & 0xff);
+ dst[2] = t = dst[2] + atab[btab[*src]] - atab[ptab[dst[2]]];
+ t &= 0x100; t >>= 8; t -= 1; t =~ t; dst[2] |= (t & 0xff);
+ }
+ art_irect_union (&my_bbox, &my_bbox, &rect);
}
void libArt::DrawingKit::rasterize_pixbuf(ArtPixBuf *pixbuf)
{
- // NOTE: this entire routine takes place "in device space"
- // since that is (a) the source of the raster and (b) the destination
- // of libart's transformation. the goal is to get everything into
- // device space and work with it there.
+ // NOTE: this entire routine takes place "in device space"
+ // since that is (a) the source of the raster and (b) the destination
+ // of libart's transformation. the goal is to get everything into
+ // device space and work with it there.
- double dev_affine[6] = {_affine[0], _affine[1], _affine[2], _affine[3],
- _affine[4] * _xres, _affine[5] * _yres };
+ double dev_affine[6] = {my_affine[0], my_affine[1],
+ my_affine[2], my_affine[3],
+ my_affine[4] * my_xres,
+ my_affine[5] * my_yres};
- // pre-transformation target rectangle, in device space coords
- ArtDRect slocd = {0,0,(double)(pixbuf->width),(double)(pixbuf->height)};
- ArtDRect tslocd;
- ArtIRect tsloci;
+ // pre-transformation target rectangle, in device space coords
+ ArtDRect slocd = {0,0,(double)(pixbuf->width),
+ (double)(pixbuf->height)};
+ ArtDRect tslocd;
+ ArtIRect tsloci;
- int width = pixbuf->width;
- int pix = ((pixbuf->n_channels * pixbuf->bits_per_sample + 7) >> 3);
- int row = (width) * pix;
- int skip = (pixbuf->rowstride - row);
- int size = (_fg.alpha == 1. ? 0 : (pixbuf->height - 1) * pixbuf->rowstride + width * pix);
+ int width = pixbuf->width;
+ int pix = ((pixbuf->n_channels * pixbuf->bits_per_sample + 7) >> 3);
+ int row = (width) * pix;
+ int skip = (pixbuf->rowstride - row);
+ int size = (my_fg.alpha == 1. ? 0 :
+ (pixbuf->height - 1) * pixbuf->rowstride + width * pix);
- art_u8 tmp[size];
- art_u8 *save = pixbuf->pixels;
+ art_u8 tmp[size];
+ art_u8 *save = pixbuf->pixels;
- // alpha-correct the image
- if (_fg.alpha != 1.)
+ // alpha-correct the image
+ if (my_fg.alpha != 1.)
{
- art_u8 *end_write = tmp + (size - 1);
- art_u8 *reader = pixbuf->pixels;
- art_u8 *tab = _alphabank[(art_u8)(_art_fg & 0x000000ff)];
- art_u8 *eol;
- for (art_u8 *writer = tmp; writer < end_write; reader += skip, writer += skip)
+ art_u8 *end_write = tmp + (size - 1);
+ art_u8 *reader = pixbuf->pixels;
+ art_u8 *tab = my_alphabank[(art_u8)(my_art_fg & 0x000000ff)];
+ art_u8 *eol;
+ for (art_u8 *writer = tmp;
+ writer < end_write;
+ reader += skip, writer += skip)
{
- memcpy(writer,reader,row);
- eol = writer + row;
- while (writer < eol)
+ memcpy(writer,reader,row);
+ eol = writer + row;
+ while (writer < eol)
{
- writer += 3; reader += 3;
- *writer++ = *(tab + *reader++);
+ writer += 3; reader += 3;
+ *writer++ = *(tab + *reader++);
}
}
- pixbuf->pixels = tmp;
+ pixbuf->pixels = tmp;
}
- // transform target (in device space)
- art_drect_affine_transform(&tslocd, &slocd, dev_affine);
- art_drect_to_irect(&tsloci, &tslocd);
- fix_order_of_irect(tsloci);
+ // transform target (in device space)
+ art_drect_affine_transform(&tslocd, &slocd, dev_affine);
+ art_drect_to_irect(&tsloci, &tslocd);
+ fix_order_of_irect(tsloci);
- // clip
- art_irect_intersect(&tsloci, &tsloci, &_clip);
- art_irect_union (&_bbox, &_bbox, &tsloci);
+ // clip
+ art_irect_intersect(&tsloci, &tsloci, &my_clip);
+ art_irect_union (&my_bbox, &my_bbox, &tsloci);
- // paint
- DirectBuffer::Guard pb_buf = _direct->write_buffer();
- ArtPixBuf * pb = art_pixbuf_new_const_rgb ((art_u8 *)(pb_buf.get()),
- _drawable->width(),
- _drawable->height(),
- _buffer->row_length());
- art_rgb_pixbuf_affine((art_u8 *)(pb_buf.get()) +
- (tsloci.y0 * pb->rowstride) +
- (tsloci.x0 * 3), // 3 for "R,G,B" packed pixels
- tsloci.x0, tsloci.y0, tsloci.x1, tsloci.y1,
- _buffer->row_length(),
- pixbuf, dev_affine,
- ART_FILTER_NEAREST, _agam);
- pixbuf->pixels = save;
+ // paint
+ Console_Extension::DirectBuffer::Guard pb_buf =
+ my_direct->write_buffer();
+ ArtPixBuf * pb = art_pixbuf_new_const_rgb ((art_u8 *)(pb_buf.get()),
+ my_drawable->width(),
+ my_drawable->height(),
+ my_buffer->row_length());
+ art_rgb_pixbuf_affine((art_u8 *)(pb_buf.get()) +
+ (tsloci.y0 * pb->rowstride) +
+ (tsloci.x0 * 3), // 3 for "R,G,B" packed pixels
+ tsloci.x0, tsloci.y0, tsloci.x1, tsloci.y1,
+ my_buffer->row_length(),
+ pixbuf, dev_affine,
+ ART_FILTER_NEAREST, my_agam);
+ pixbuf->pixels = save;
}
void libArt::DrawingKit::draw_text(const Unistring &u)
{
- // presently disabled. should delegate to drawChar
+ // FIXME: presently disabled. should delegate to drawChar
}
void libArt::DrawingKit::draw_char(Unichar c)
{
- double x0 = _affine[4];
- double y0 = _affine[5];
- int width;
- int height;
- Graphic::Requisition r;
- // We need to initialise this manually:
- r.x.defined = false;
- r.y.defined = false;
- r.z.defined = false;
- r.preserve_aspect = false;
+ double x0 = my_affine[4];
+ double y0 = my_affine[5];
+ int width;
+ int height;
+ Graphic::Requisition r;
+ // We need to initialise this manually:
+ r.x.defined = false;
+ r.y.defined = false;
+ r.z.defined = false;
+ r.preserve_aspect = false;
- if (c > 127)
+ if (c > 127)
{
- _unifont->allocate_char(c,r);
- width = (int) (r.x.maximum * _xres);
- height = (int) (r.y.maximum * _yres);
+ my_unifont->allocate_char(c,r);
+ width = (int) (r.x.maximum * my_xres);
+ height = (int) (r.y.maximum * my_yres);
}
- else
+ else
{
- _font->allocate_char(c,r);
- Fresco::DrawingKit::GlyphMetrics gm = _font->metrics(c);
- width = (int) (gm.width >> 6);
- height = (int) (gm.height >> 6);
+ my_font->allocate_char(c,r);
+ Fresco::DrawingKit::GlyphMetrics gm = my_font->metrics(c);
+ width = (int) (gm.width >> 6);
+ height = (int) (gm.height >> 6);
}
- ArtPixBuf *pb;
- int transformed = false;
- double matrix[4];
- for (int i = 0; i < 4; ++i) matrix[i] = _affine[i];
+ ArtPixBuf *pb;
+ int transformed = false;
+ double matrix[4];
+ // FIXME: USe memcopy!
+ for (int i = 0; i < 4; ++i) matrix[i] = my_affine[i];
- if (c > 127)
+ if (c > 127)
{
- transformed = _unifont->transform(matrix);
- _unifont->buffer(c, pb);
+ transformed = my_unifont->transform(matrix);
+ my_unifont->buffer(c, pb);
}
- else
+ else
{
- transformed = _font->transform(matrix);
- _font->buffer(c, pb);
+ transformed = my_font->transform(matrix);
+ my_font->buffer(c, pb);
}
- if (transformed || (_affine[0] == 1 &&
- _affine[1] == 0 &&
- _affine[2] == 0 &&
- _affine[3] == 1))
+ if (transformed || (my_affine[0] == 1 &&
+ my_affine[1] == 0 &&
+ my_affine[2] == 0 &&
+ my_affine[3] == 1))
{
- _affine[5] -= (_affine[2] * r.x.maximum * r.x.align) + (_affine[3] * r.y.maximum * r.y.align);
- identity_pixbuf(pb);
+ my_affine[5] -= (my_affine[2] * r.x.maximum * r.x.align) +
+ (my_affine[3] * r.y.maximum * r.y.align);
+ identity_pixbuf(pb);
}
- else
+ else
{
- // *sigh* use primitive libart pixel functions
- _affine[4] -= (r.y.maximum * r.y.align * _affine[2]);
- _affine[5] -= (r.y.maximum * r.y.align * _affine[3]);
- int pix = 4;
- int row = width * pix;
- int size = height * row;
- art_u8 pixels[size];
- //setup foreground color
- for (int i = 0; i < row; ++i)
+ // *sigh* use primitive libart pixel functions
+ my_affine[4] -= (r.y.maximum * r.y.align * my_affine[2]);
+ my_affine[5] -= (r.y.maximum * r.y.align * my_affine[3]);
+ int pix = 4;
+ int row = width * pix;
+ int size = height * row;
+ art_u8 pixels[size];
+ //setup foreground color
+ for (int i = 0; i < row; ++i)
{
- pixels[i] = (unsigned char) ((_art_fg >> 24) & 0x000000ff);
- pixels[++i] = (unsigned char) ((_art_fg >> 16) & 0x000000ff);
- pixels[++i] = (unsigned char) ((_art_fg >> 8) & 0x000000ff);
- pixels[++i] = (unsigned char) 0;
+ pixels[i] = (unsigned char) ((my_art_fg >> 24) & 0x000000ff);
+ pixels[++i] = (unsigned char) ((my_art_fg >> 16) & 0x000000ff);
+ pixels[++i] = (unsigned char) ((my_art_fg >> 8) & 0x000000ff);
+ pixels[++i] = (unsigned char) 0;
}
- for (int i = 0; i < height; ++i) memcpy (pixels + (i * row), pixels, row);
- for (int i = 0; i < (width * height); ++i) pixels[pix*i + 3] = pb->pixels[i];
- ArtPixBuf *pb2 = art_pixbuf_new_const_rgba (pixels, width, height, row);
- rasterize_pixbuf(pb2);
- art_pixbuf_free(pb2);
+ for (int i = 0; i < height; ++i)
+ memcpy(pixels + (i * row), pixels, row);
+ for (int i = 0; i < (width * height); ++i)
+ pixels[pix*i + 3] = pb->pixels[i];
+ ArtPixBuf *pb2 =
+ art_pixbuf_new_const_rgba(pixels, width, height, row);
+ rasterize_pixbuf(pb2);
+ art_pixbuf_free(pb2);
}
- _affine[4] = x0;
- _affine[5] = y0;
+ my_affine[4] = x0;
+ my_affine[5] = y0;
}
-void libArt::DrawingKit::allocate_char(Unichar c, Graphic::Requisition & req)
+void libArt::DrawingKit::allocate_char(Unichar c,
+ Graphic::Requisition & req)
{
- if (c > 127) _unifont->allocate_char(c,req);
- else _font->allocate_char(c,req);
+ if (c > 127) my_unifont->allocate_char(c, req);
+ else my_font->allocate_char(c, req);
}
void libArt::DrawingKit::allocate_text(const Unistring & s,
Graphic::Requisition & req)
{
- // font->allocate(s,req);
+ // font->allocate(s,req);
}
void libArt::DrawingKit::copy_drawable(Drawable_ptr d,
PixelCoord x, PixelCoord y,
PixelCoord w, PixelCoord h)
{
- CORBA::Double x2 = _affine[4] * _buffer->resolution(xaxis);
- CORBA::Double y2 = _affine[5] * _buffer->resolution(yaxis);
- _buffer->blit(d, x, y, w, h, static_cast<long>(x2 + x), static_cast<long>(y2 + y));
+ CORBA::Double x2 = my_affine[4] * my_buffer->resolution(xaxis);
+ CORBA::Double y2 = my_affine[5] * my_buffer->resolution(yaxis);
+ my_buffer->blit(d, x, y, w, h,
+ static_cast<long>(x2 + x),
+ static_cast<long>(y2 + y));
}
void libArt::DrawingKit::flush()
{
- int x = _bbox.x0;
- int y = _bbox.y0;
- int w = _bbox.x1 - _bbox.x0;
- int h = _bbox.y1 - _bbox.y0;
- _buffer->flush(x, y, w, h);
- _drawable->blit(*_buffer, x, y, w, h, x, y);
- _bbox.x0 = _bbox.y0 = _bbox.x1 = _bbox.y1 = 0;
- _drawable->flush(x, y, w, h);
+ int x = my_bbox.x0;
+ int y = my_bbox.y0;
+ int w = my_bbox.x1 - my_bbox.x0;
+ int h = my_bbox.y1 - my_bbox.y0;
+ my_buffer->flush(x, y, w, h);
+ my_drawable->blit(*my_buffer, x, y, w, h, x, y);
+ my_bbox.x0 = my_bbox.y0 = my_bbox.x1 = my_bbox.y1 = 0;
+ my_drawable->flush(x, y, w, h);
}
-extern "C" KitImpl *load()
+extern "C" Berlin::KitImpl *load()
{
- static std::string properties[] = {"implementation", "LibArtDrawingKit"};
- return create_prototype<libArt::DrawingKit>("IDL:fresco.org/Fresco/DrawingKit:1.0", properties, 2);
+ static std::string properties[] = {"implementation", "LibArtDrawingKit"};
+ return Berlin::create_prototype<libArt::DrawingKit>("IDL:fresco.org/Fresco/DrawingKit:1.0", properties, 2);
}
Index: DrawingKit.hh
===================================================================
RCS file: /cvs/fresco/Fresco/Berlin/modules/Drawing/libArt/DrawingKit.hh,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- DrawingKit.hh 27 May 2003 23:12:45 -0000 1.31
+++ DrawingKit.hh 29 Dec 2003 08:03:23 -0000 1.32
@@ -20,8 +20,8 @@
* Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
* MA 02139, USA.
*/
-#ifndef _DrawingKit_hh
-#define _DrawingKit_hh
+#ifndef _libArt_DrawingKit_hh
+#define _libArt_DrawingKit_hh
#include <Prague/Sys/Thread.hh>
#include <Fresco/config.hh>
@@ -48,122 +48,160 @@
namespace Berlin
{
-namespace DrawingKit
-{
-namespace libArt
-{
-
-class DrawingKit : public DrawingKitBase, public KitImpl
-{
-public:
- DrawingKit(const std::string &,
- const Fresco::Kit::PropertySeq &,
- ServerContextImpl *);
- virtual ~DrawingKit();
- virtual KitImpl *clone(const Fresco::Kit::PropertySeq &, ServerContextImpl *);
-
- virtual void transformation(Fresco::Transform_ptr t) { DrawingKitBase::transformation(t);}
- virtual Fresco::Transform_ptr transformation() { return Fresco::Transform::_duplicate(_tr);}
- virtual void clipping(Fresco::Region_ptr r) { DrawingKitBase::clipping(r);}
- virtual Fresco::Region_ptr clipping() { return Fresco::Region::_duplicate(_cl);}
- virtual void foreground(const Fresco::Color &c) { DrawingKitBase::foreground(c);}
- virtual Fresco::Color foreground() { return _fg;}
- virtual void lighting(const Fresco::Color &c) { DrawingKitBase::lighting(c);}
- virtual Fresco::Color lighting() { return _lt;}
- virtual void point_size(Fresco::Coord c) { DrawingKitBase::point_size(c);}
- virtual Fresco::Coord point_size() { return _ps;}
- virtual void line_width(Fresco::Coord c) { DrawingKitBase::line_width(c);}
- virtual Fresco::Coord line_width() { return _lw;}
- virtual void line_endstyle(Fresco::DrawingKit::Endstyle e) { DrawingKitBase::line_endstyle(e);}
- virtual Fresco::DrawingKit::Endstyle line_endstyle() { return _es;}
- virtual void surface_fillstyle(Fresco::DrawingKit::Fillstyle f) { DrawingKitBase::surface_fillstyle(f);}
- virtual Fresco::DrawingKit::Fillstyle surface_fillstyle() { return _fs;}
- virtual void texture(Fresco::Raster_ptr r) { DrawingKitBase::texture(r);}
- virtual Fresco::Raster_ptr texture() { //return tx ? Raster::_duplicate(tx->remote) :
- return Fresco::Raster::_nil();}
-
- virtual CORBA::ULong font_size() { return _font->size();}
- virtual CORBA::ULong font_weight() { return _font->weight();}
- virtual Fresco::Unistring *font_family() { return _font->family();}
- virtual Fresco::Unistring *font_subfamily() { return _font->subfamily();}
- virtual Fresco::Unistring *font_fullname() { return _font->fullname();}
- virtual Fresco::Unistring *font_style() { return _font->style();}
- virtual Fresco::DrawingKit::FontMetrics font_metrics() { return _font->metrics();}
- virtual Fresco::DrawingKit::GlyphMetrics glyph_metrics(Fresco::Unichar uc) { return _font->metrics(uc);}
- virtual CORBA::Any *get_font_attribute(const Fresco::Unistring & name) { return new CORBA::Any();}
-
- virtual void set_transformation(Fresco::Transform_ptr);
- virtual void set_clipping(Fresco::Region_ptr);
- virtual void set_foreground(const Fresco::Color &);
- virtual void set_lighting(const Fresco::Color &);
- virtual void set_point_size(Fresco::Coord);
- virtual void set_line_width(Fresco::Coord);
- virtual void set_line_endstyle(Fresco::DrawingKit::Endstyle);
- virtual void set_surface_fillstyle(Fresco::DrawingKit::Fillstyle);
- virtual void set_texture(Fresco::Raster_ptr);
+ namespace DrawingKit
+ {
+ namespace libArt
+ {
+
+ class DrawingKit : public DrawingKitBase, public KitImpl
+ {
+ public:
+ DrawingKit(const std::string &,
+ const Fresco::Kit::PropertySeq &,
+ ServerContextImpl *);
+ virtual ~DrawingKit();
+ virtual KitImpl *clone(const Fresco::Kit::PropertySeq &,
+ ServerContextImpl *);
+
+ virtual void transformation(Fresco::Transform_ptr t)
+ { DrawingKitBase::transformation(t); }
+ virtual Fresco::Transform_ptr transformation()
+ { return Fresco::Transform::_duplicate(my_tr); }
+ virtual void clipping(Fresco::Region_ptr r)
+ { DrawingKitBase::clipping(r); }
+ virtual Fresco::Region_ptr clipping()
+ { return Fresco::Region::_duplicate(my_cl); }
+ virtual void foreground(const Fresco::Color &c)
+ { DrawingKitBase::foreground(c); }
+ virtual Fresco::Color foreground() { return my_fg; }
+ virtual void lighting(const Fresco::Color &c)
+ { DrawingKitBase::lighting(c); }
+ virtual Fresco::Color lighting() { return my_lt; }
+ virtual void point_size(Fresco::Coord c)
+ { DrawingKitBase::point_size(c); }
+ virtual Fresco::Coord point_size() { return my_ps; }
+ virtual void line_width(Fresco::Coord c)
+ { DrawingKitBase::line_width(c);}
+ virtual Fresco::Coord line_width() { return my_lw;}
+ virtual void line_endstyle(Fresco::DrawingKit::Endstyle e)
+ { DrawingKitBase::line_endstyle(e); }
+ virtual Fresco::DrawingKit::Endstyle line_endstyle()
+ { return my_es; }
+ virtual void surface_fillstyle(Fresco::DrawingKit::Fillstyle f)
+ { DrawingKitBase::surface_fillstyle(f); }
+ virtual Fresco::DrawingKit::Fillstyle surface_fillstyle()
+ { return my_fs; }
+ virtual void texture(Fresco::Raster_ptr r)
+ { DrawingKitBase::texture(r); }
+ virtual Fresco::Raster_ptr texture()
+ {
+ //return tx ? Raster::_duplicate(tx->remote) :
+ return Fresco::Raster::_nil();
+ }
- virtual void set_font_size(CORBA::ULong);
- virtual void set_font_weight(CORBA::ULong);
- virtual void set_font_family(const Fresco::Unistring &);
- virtual void set_font_subfamily(const Fresco::Unistring &);
- virtual void set_font_fullname(const Fresco::Unistring &);
- virtual void set_font_style(const Fresco::Unistring &);
- virtual void set_font_attribute(const Fresco::NVPair &);
+ virtual CORBA::ULong font_size() { return my_font->size(); }
+ virtual CORBA::ULong font_weight() { return my_font->weight(); }
+ virtual Fresco::Unistring *font_family()
+ { return my_font->family(); }
+ virtual Fresco::Unistring *font_subfamily()
+ { return my_font->subfamily(); }
+ virtual Fresco::Unistring *font_fullname()
+ { return my_font->fullname(); }
+ virtual Fresco::Unistring *font_style()
+ { return my_font->style(); }
+ virtual Fresco::DrawingKit::FontMetrics font_metrics()
+ { return my_font->metrics(); }
+ virtual Fresco::DrawingKit::GlyphMetrics
+ glyph_metrics(Fresco::Unichar uc)
+ { return my_font->metrics(uc); }
+ virtual CORBA::Any *
+ get_font_attribute(const Fresco::Unistring & name)
+ { return new CORBA::Any(); }
- virtual Fresco::Coord resolution(Fresco::Axis a) { return _drawable->resolution(a);}
- virtual void draw_path(const Fresco::Path &);
- virtual void draw_new_path(const Fresco::NewPath &);
-// virtual void drawPatch(const Fresco::Patch &);
- virtual void draw_rectangle(const Fresco::Vertex &, const Fresco::Vertex &);
- virtual void draw_quadric(const Fresco::DrawingKit::Quadric, Fresco::Coord, Fresco::Coord);
- virtual void draw_ellipse(const Fresco::Vertex &, const Fresco::Vertex &);
- virtual void draw_image(Fresco::Raster_ptr);
- virtual void allocate_text(const Fresco::Unistring &, Fresco::Graphic::Requisition &);
- virtual void draw_text(const Fresco::Unistring &);
- virtual void allocate_char(Fresco::Unichar, Fresco::Graphic::Requisition &);
- virtual void draw_char(Fresco::Unichar);
- virtual void copy_drawable(Fresco::Drawable_ptr, Fresco::PixelCoord, Fresco::PixelCoord, Fresco::PixelCoord, Fresco::PixelCoord);
- virtual void flush();
+ virtual void set_transformation(Fresco::Transform_ptr);
+ virtual void set_clipping(Fresco::Region_ptr);
+ virtual void set_foreground(const Fresco::Color &);
+ virtual void set_lighting(const Fresco::Color &);
+ virtual void set_point_size(Fresco::Coord);
+ virtual void set_line_width(Fresco::Coord);
+ virtual void set_line_endstyle(Fresco::DrawingKit::Endstyle);
+ virtual void
+ set_surface_fillstyle(Fresco::DrawingKit::Fillstyle);
+ virtual void set_texture(Fresco::Raster_ptr);
- virtual void start_traversal(Fresco::Traversal_ptr) { _drawable->init(); }
- virtual void finish_traversal() { _drawable->finish(); }
- private:
- void init();
- void rasterize_pixbuf(ArtPixBuf *pixbuf);
- void identity_pixbuf(ArtPixBuf *pixbuf);
+ virtual void set_font_size(CORBA::ULong);
+ virtual void set_font_weight(CORBA::ULong);
+ virtual void set_font_family(const Fresco::Unistring &);
+ virtual void set_font_subfamily(const Fresco::Unistring &);
+ virtual void set_font_fullname(const Fresco::Unistring &);
+ virtual void set_font_style(const Fresco::Unistring &);
+ virtual void set_font_attribute(const Fresco::NVPair &);
+
+ virtual Fresco::Coord resolution(Fresco::Axis a)
+ { return my_drawable->resolution(a); }
+ virtual void draw_path(const Fresco::Path &);
+ virtual void draw_new_path(const Fresco::NewPath &);
+ // virtual void drawPatch(const Fresco::Patch &);
+ virtual void draw_rectangle(const Fresco::Vertex &,
+ const Fresco::Vertex &);
+ virtual void draw_quadric(const Fresco::DrawingKit::Quadric,
+ Fresco::Coord, Fresco::Coord);
+ virtual void draw_ellipse(const Fresco::Vertex &,
+ const Fresco::Vertex &);
+ virtual void draw_image(Fresco::Raster_ptr);
+ virtual void allocate_text(const Fresco::Unistring &,
+ Fresco::Graphic::Requisition &);
+ virtual void draw_text(const Fresco::Unistring &);
+ virtual void allocate_char(Fresco::Unichar,
+ Fresco::Graphic::Requisition &);
+ virtual void draw_char(Fresco::Unichar);
+ virtual void copy_drawable(Fresco::Drawable_ptr,
+ Fresco::PixelCoord,
+ Fresco::PixelCoord,
+ Fresco::PixelCoord,
+ Fresco::PixelCoord);
+ virtual void flush();
- Console::Drawable *_drawable;
- Console::Drawable *_buffer;
- Renderer *_renderer;
- DirectBuffer *_direct;
- ArtIRect _bbox;
- double _xres, _yres;
- Prague::Mutex _mutex;
+ virtual void start_traversal(Fresco::Traversal_ptr)
+ { my_drawable->init(); }
+ virtual void finish_traversal() { my_drawable->finish(); }
+ private:
+ void init();
+ void rasterize_pixbuf(ArtPixBuf *pixbuf);
+ void identity_pixbuf(ArtPixBuf *pixbuf);
- double _affine[6];
- double _scaled_affine[6];
+ Console::Drawable *my_drawable;
+ Console::Drawable *my_buffer;
+ Console_Extension::Renderer *my_renderer;
+ Console_Extension::DirectBuffer *my_direct;
+ ArtIRect my_bbox;
+ double my_xres, my_yres;
+ Prague::Mutex my_mutex;
- Fresco::Transform_var _tr;
- Fresco::Region_var _cl;
- Fresco::Color _fg;
- Fresco::Color _lt;
- Fresco::Coord _ps;
- Fresco::Coord _lw;
- Fresco::DrawingKit::Endstyle _es;
- Fresco::DrawingKit::Fillstyle _fs;
- FTFont *_font;
- Font *_unifont;
- art_u8 _alphabank[256][256];
- ArtAlphaGamma *_agam;
- Fresco::Color _con_fg;
- art_u32 _art_fg;
- ArtIRect _screen, _clip;
-
- ObjectCache<Fresco::Raster_var, libArt::Raster> _rasters;
-};
+ double my_affine[6];
+ double my_scaled_affine[6];
+
+ Fresco::Transform_var my_tr;
+ Fresco::Region_var my_cl;
+ Fresco::Color my_fg;
+ Fresco::Color my_lt;
+ Fresco::Coord my_ps;
+ Fresco::Coord my_lw;
+ Fresco::DrawingKit::Endstyle my_es;
+ Fresco::DrawingKit::Fillstyle my_fs;
+ FTFont *my_font;
+ Font *my_unifont;
+ art_u8 my_alphabank[256][256];
+ ArtAlphaGamma *my_agam;
+ Fresco::Color my_con_fg;
+ art_u32 my_art_fg;
+ ArtIRect my_screen, my_clip;
+
+ ObjectCache<Fresco::Raster_var, libArt::Raster> my_rasters;
+ };
-} // namespace
-} // namespace
+ } // namespace
+ } // namespace
} // namespace
#endif