[drgeo/goffice: 71/82] add gnome print drawable files. add printing. new drawable based on gnome
- From: Jean Bréfort <jbrefort src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [drgeo/goffice: 71/82] add gnome print drawable files. add printing. new drawable based on gnome
- Date: Sat, 13 Feb 2010 14:24:36 +0000 (UTC)
commit 4fc62252c89d73ccda609149e9e0e6230ef37eee
Author: Jean Brefort <jean brefort normalesup org>
Date: Mon Feb 6 14:01:06 2006 +0000
add gnome print drawable files. add printing. new drawable based on gnome
2006-02-06 Jean Brefort <jean brefort normalesup org>
* goffice/Makefile.am: add gnome print drawable files.
* goffice/drgeo.cc: add printing.
* goffice/drgeo_gpdrawable.cc: new drawable based on gnome print.
* goffice/drgeo_gpdrawable.h: ditto.
ChangeLog | 7 ++
goffice/Makefile.am | 4 +-
goffice/drgeo.cc | 6 +
goffice/drgeo_gpdrawable.cc | 221 +++++++++++++++++++++++++++++++++++++++++++
goffice/drgeo_gpdrawable.h | 63 ++++++++++++
5 files changed, 300 insertions(+), 1 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 845cb27..21150e5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -27,6 +27,13 @@
* configure.ac: Add "zh_HK" to ALL_LINGUAS.
+2006-02-06 Jean Brefort <jean brefort normalesup org>
+
+ * goffice/Makefile.am: add gnome print drawable files.
+ * goffice/drgeo.cc: add printing.
+ * goffice/drgeo_gpdrawable.cc: new drawable based on gnome print.
+ * goffice/drgeo_gpdrawable.h: ditto.
+
2006-02-05 Jean Brefort <jean brefort normalesup org>
* geo/drgeo_figure.cc: add getBounds method.
diff --git a/goffice/Makefile.am b/goffice/Makefile.am
index 733c43e..811f7f2 100644
--- a/goffice/Makefile.am
+++ b/goffice/Makefile.am
@@ -23,7 +23,9 @@ drgeo_la_SOURCES = \
goffice_mdi.cc \
goffice_mdi.h \
drgeo_cairodrawable.cc \
- drgeo_cairodrawable.h
+ drgeo_cairodrawable.h \
+ drgeo_gpdrawable.cc \
+ drgeo_gpdrawable.h
xml_in_files = plugin.xml.in
xmldir = $(goffice_drgeodir)
diff --git a/goffice/drgeo.cc b/goffice/drgeo.cc
index d96e0ed..4cc95ab 100644
--- a/goffice/drgeo.cc
+++ b/goffice/drgeo.cc
@@ -27,6 +27,7 @@
#include <geo/drgeo_figure.h>
#include "goffice_mdi.h"
#include "drgeo_cairodrawable.h"
+#include "drgeo_gpdrawable.h"
#include <libxml/tree.h>
#ifdef _
@@ -128,6 +129,11 @@ go_drgeo_component_print (GOComponent *component, GnomePrintContext *gpc,
double width, double height)
{
GODrGeoComponent *godrgeo = GO_DRGEO_COMPONENT (component);
+ drgeoGPDrawable *drawable = new drgeoGPDrawable (godrgeo->figure, gpc);
+ drawable->scale = width / godrgeo->width;
+ drawable->setOffset (godrgeo->xoffset, godrgeo->yoffset - godrgeo->height);
+ godrgeo->figure->redraw (0);
+ delete drawable;
}
diff --git a/goffice/drgeo_gpdrawable.cc b/goffice/drgeo_gpdrawable.cc
new file mode 100644
index 0000000..c643182
--- /dev/null
+++ b/goffice/drgeo_gpdrawable.cc
@@ -0,0 +1,221 @@
+/*
+ * DrGeo GOffice component
+ * drgeo_gnome_printdrawable.cc
+ *
+ * Copyright (C) 2006
+ *
+ * Developed by Jean Bréfort <jean brefort normalesup org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
+#include <config.h>
+#include "drgeo_gpdrawable.h"
+#include <geo/couleur.h>
+
+drgeoGPDrawable::drgeoGPDrawable (drgeoFigure * figure, GnomePrintContext *pc)
+{
+ setFigure (figure);
+ m_pc = pc;
+ gnome_print_gsave (m_pc);
+ figure->setDrawable (this);
+}
+
+drgeoGPDrawable::~drgeoGPDrawable ()
+{
+ gnome_print_grestore (m_pc);
+}
+
+void drgeoGPDrawable::drawPoint (drgeoStyle & style, drgeoPoint & point)
+{
+ if (style.mask == yes)
+ return;
+
+ double x = point.getX (), y = point.getY (), radius;
+
+ switch (style.thick)
+ {
+ case drgeoThicknessDashed:
+ radius = .05;
+ break;
+ case drgeoThicknessNormal:
+ radius = .075;
+ break;
+ case drgeoThicknessLarge:
+ radius = .1;
+ break;
+ }
+
+ setColor (style.color);
+
+ switch (style.pointShape)
+ {
+ case drgeoPointRound:
+ break;
+ case drgeoPointX:
+ gnome_print_setlinewidth (m_pc, .05);
+ gnome_print_setdash (m_pc, 0, NULL, 0.);
+ gnome_print_setlinecap (m_pc, 1);
+ gnome_print_setlinejoin (m_pc, 1);
+
+ gnome_print_newpath (m_pc);
+ gnome_print_moveto (m_pc, x - radius, y - radius);
+ gnome_print_lineto (m_pc, x + radius, y + radius);
+ gnome_print_stroke (m_pc);
+ gnome_print_newpath (m_pc);
+ gnome_print_moveto (m_pc, x - radius, y + radius);
+ gnome_print_lineto (m_pc, x + radius, y - radius);
+ gnome_print_stroke (m_pc);
+ break;
+ case drgeoPointRec:
+ break;
+ case drgeoPointRoundEmpty:
+ break;
+ case drgeoPointRecEmpty:
+ break;
+ }
+}
+
+void drgeoGPDrawable::drawPolygon (drgeoStyle & style, drgeoPoint * point, gint number)
+{
+}
+
+void drgeoGPDrawable::drawLine (drgeoStyle & style, drgeoPoint & start, drgeoPoint & end)
+{
+}
+
+void drgeoGPDrawable::drawHalfLine (drgeoStyle & style, drgeoPoint & start,
+ drgeoVector & vect)
+{
+}
+
+void drgeoGPDrawable::drawSegment (drgeoStyle & style, drgeoPoint & start, drgeoPoint & end)
+{
+ if (style.mask == yes)
+ return;
+
+ setColor (style.color);
+
+ switch (style.thick)
+ {
+ case drgeoThicknessDashed:
+ break;
+ case drgeoThicknessNormal:
+ gnome_print_setlinewidth (m_pc, .025);
+ gnome_print_setdash (m_pc, 0, NULL, 0.);
+ gnome_print_setlinecap (m_pc, 1);
+ gnome_print_setlinejoin (m_pc, 1);
+ break;
+ case drgeoThicknessLarge:
+ break;
+ }
+
+ // Draw the line.
+ gnome_print_newpath (m_pc);
+ gnome_print_moveto (m_pc, start.getX (), start.getY ());
+ gnome_print_lineto (m_pc, end.getX (), end.getY ());
+ gnome_print_stroke (m_pc);
+}
+
+void drgeoGPDrawable::drawCircle (drgeoStyle & style, drgeoPoint & center, double radius)
+{
+}
+
+void drgeoGPDrawable::drawCircle (drgeoStyle & style, drgeoPoint & center,
+ drgeoPoint & point)
+{
+}
+
+void drgeoGPDrawable::drawArc (drgeoStyle & style, drgeoPoint & center, double radius,
+ double start, double length)
+{
+}
+
+void drgeoGPDrawable::drawText (drgeoPoint & where, char *text, drgeoColorType fontColor)
+{
+}
+
+double drgeoGPDrawable::stringWidth (char *text)
+{
+}
+
+double drgeoGPDrawable::stringHeight (char *text)
+{
+}
+
+drgeoPoint drgeoGPDrawable::getAreaCenter ()
+{
+}
+
+drgeoPoint drgeoGPDrawable::getAreaSize ()
+{
+}
+
+void drgeoGPDrawable::setOffset (double xOffset, double yOffset)
+{
+ gnome_print_scale (m_pc, scale, scale);
+ gnome_print_translate (m_pc, -xOffset, -yOffset);
+}
+
+void drgeoGPDrawable::setColor (enum drgeoColorType color)
+{
+ switch (color) {
+ case drgeoColorBlack:
+ gnome_print_setrgbcolor (m_pc, 0., 0., 0.);
+ break;
+ case drgeoColorDarkGrey:
+ gnome_print_setrgbcolor (m_pc, .333333, .333333, .333333);
+ break;
+ case drgeoColorGrey:
+ gnome_print_setrgbcolor (m_pc, .666667, .666667, .666667);
+ break;
+ case drgeoColorWhite:
+ gnome_print_setrgbcolor (m_pc, 1., 1., 1.);
+ break;
+ case drgeoColorDarkGreen:
+ gnome_print_setrgbcolor (m_pc, 0., .392157, 0.);
+ break;
+ case drgeoColorGreen:
+ gnome_print_setrgbcolor (m_pc, 0., .921569, 0.);
+ break;
+ case drgeoColorDarkBlue:
+ gnome_print_setrgbcolor (m_pc, .176471, .219608, 1.);
+ break;
+ case drgeoColorBlue:
+ gnome_print_setrgbcolor (m_pc, .313725, .694118, 1.);
+ break;
+ case drgeoColorBordeaux:
+ gnome_print_setrgbcolor (m_pc, .568627, 0., 0.);
+ break;
+ case drgeoColorRed:
+ gnome_print_setrgbcolor (m_pc, .921569, 0., 0.);
+ break;
+ case drgeoColorOrange:
+ gnome_print_setrgbcolor (m_pc, 1., .6, .168627);
+ break;
+ case drgeoColorYellow:
+ gnome_print_setrgbcolor (m_pc, 1., .941176, .129412);
+ break;
+ case drgeoColorTips:
+ gnome_print_setrgbcolor (m_pc, 1., 1., .752941);
+ break;
+ case drgeoColorPrintingArea:
+ gnome_print_setrgbcolor (m_pc, .941176, .941176, .941176);
+ break;
+ default:
+ break;
+ }
+}
diff --git a/goffice/drgeo_gpdrawable.h b/goffice/drgeo_gpdrawable.h
new file mode 100644
index 0000000..5e8ce3a
--- /dev/null
+++ b/goffice/drgeo_gpdrawable.h
@@ -0,0 +1,63 @@
+/*
+ * DrGeo GOffice component
+ * drgeo_cairodrawable.h
+ *
+ * Copyright (C) 2006
+ *
+ * Developed by Jean Bréfort <jean brefort normalesup org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
+#ifndef DRGEO_GPDRAWABLE_H
+#define DRGEO_GPDRAWABLE_H
+
+#include <geo/drgeo_drawable.h>
+#include <libgnomeprint/gnome-print.h>
+
+// Implementation of Cairo drawable.
+class drgeoGPDrawable:public drgeoDrawable
+{
+public:
+ drgeoGPDrawable (drgeoFigure * figure, GnomePrintContext *pc);
+ ~drgeoGPDrawable ();
+
+ void drawPoint (drgeoStyle & style, drgeoPoint & point);
+ void drawPolygon (drgeoStyle & style, drgeoPoint * point, gint number);
+ void drawLine (drgeoStyle & style, drgeoPoint & start, drgeoPoint & end);
+ void drawHalfLine (drgeoStyle & style, drgeoPoint & start,
+ drgeoVector & vect);
+ void drawSegment (drgeoStyle & style, drgeoPoint & start, drgeoPoint & end);
+ void drawCircle (drgeoStyle & style, drgeoPoint & center, double radius);
+ void drawCircle (drgeoStyle & style, drgeoPoint & center,
+ drgeoPoint & point);
+ void drawArc (drgeoStyle & style, drgeoPoint & center, double radius,
+ double start, double length);
+ void drawText (drgeoPoint & where, char *text, drgeoColorType fontColor);
+ double stringWidth (char *text);
+ double stringHeight (char *text);
+ drgeoPoint getAreaCenter ();
+ drgeoPoint getAreaSize ();
+ void setOffset (double xOffset, double yOffset);
+
+private:
+ void setColor (enum drgeoColorType color);
+
+private:
+ GnomePrintContext *m_pc;
+};
+
+#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]