~ubuntu-branches/ubuntu/quantal/texmacs/quantal

« back to all changes in this revision

Viewing changes to src/Plugins/Cairo/tm_cairo.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Atsuhito KOHDA, Kamaraju Kusumanchi, kohda
  • Date: 2009-04-26 19:35:14 UTC
  • mfrom: (1.1.10 upstream) (4.1.4 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090426193514-9yo3oggdslgdls4b
Tags: 1:1.0.7.2-1
[Kamaraju Kusumanchi <kamaraju@gmail.com>]
* New upstream release
* texmacs crashes if /usr/share/texmacs/TeXmacs/misc/pixmaps/unknown.ps
  is not present. Do not remove it. (Closes: #484073, #497021)
* update patches 03_mupad.dpatch, 04_axiom.dpatch, 11-desktop-file.dpatch
* fix the mime problem in gnome. Thanks to Andrea Gamba for the fix.
[kohda]
* Refined a fix for the mime problem in gnome a bit.
* Try to fix /bin/sh problem (debian/fixsh) but it is not complete fix yet.
* Try to fix hard coded settings for ipa fonts(patches/09_ipa.dpatch), 
  especially for Debian where no ipa fonts exist yet.
* Fixed obsolete Build-Depends: changed libltdl3-dev to 
  libltdl-dev | libltdl7-dev (the latter for Ubuntu?)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
/******************************************************************************
 
3
* MODULE     : tm_cairo.cpp
 
4
* DESCRIPTION: Interface with Cairo
 
5
* COPYRIGHT  : (C) 2008 Massimiliano Gubinelli
 
6
*******************************************************************************
 
7
* This software falls under the GNU general public license version 3 or later.
 
8
* It comes WITHOUT ANY WARRANTY WHATSOEVER. For details, see the file LICENSE
 
9
* in the root directory or <http://www.gnu.org/licenses/gpl-3.0.html>.
 
10
******************************************************************************/
 
11
 
 
12
#include "dyn_link.hpp"
 
13
 
 
14
#ifdef USE_CAIRO
 
15
#include <cairo.h>
 
16
#include <cairo-ft.h>
 
17
#include <cairo-ps.h>
 
18
 
 
19
static bool tm_cairo_initialized= false;
 
20
static bool tm_cairo_error      = true;
 
21
 
 
22
 void (*tm_cairo_move_to) (cairo_t *cr, double x, double y);
 
23
 void (*tm_cairo_show_glyphs) (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs);
 
24
 cairo_status_t (*tm_cairo_font_face_status) (cairo_font_face_t *font_face);
 
25
 void (*tm_cairo_set_source_surface) (cairo_t *cr, cairo_surface_t *surface, double x, double y);
 
26
 void (*tm_cairo_new_path) (cairo_t *cr);
 
27
 void (*tm_cairo_stroke) (cairo_t *cr);
 
28
 cairo_status_t (*tm_cairo_font_face_set_user_data) (cairo_font_face_t *font_face, const cairo_user_data_key_t *key, void *user_data, cairo_destroy_func_t destroy);
 
29
 void (*tm_cairo_set_antialias) (cairo_t *cr, cairo_antialias_t antialias);
 
30
 void (*tm_cairo_set_font_size) (cairo_t *cr, double size);
 
31
 void (*tm_cairo_fill) (cairo_t *cr);
 
32
 void (*tm_cairo_set_source_rgba) (cairo_t *cr, double red, double green, double blue, double alpha);
 
33
 cairo_surface_t * (*tm_cairo_ps_surface_create) (const char *filename, double width_in_points, double height_in_points);
 
34
 const char * (*tm_cairo_status_to_string) (cairo_status_t status);
 
35
 void (*tm_cairo_set_source_rgb) (cairo_t *cr, double red, double green, double blue);
 
36
 void (*tm_cairo_close_path) (cairo_t *cr);
 
37
 void (*tm_cairo_restore) (cairo_t *cr);
 
38
 void (*tm_cairo_translate) (cairo_t *cr, double tx, double ty);
 
39
 void (*tm_cairo_set_font_face) (cairo_t *cr, cairo_font_face_t *font_face);
 
40
 void (*tm_cairo_font_face_destroy) (cairo_font_face_t *font_face);
 
41
 void (*tm_cairo_set_line_width) (cairo_t *cr, double width);
 
42
 cairo_surface_t * (*tm_cairo_image_surface_create_from_png) (const char *filename);
 
43
 cairo_font_face_t * (*tm_cairo_ft_font_face_create_for_ft_face) (FT_Face face, int load_flags);
 
44
 int (*tm_cairo_image_surface_get_width) (cairo_surface_t *surface);
 
45
 void (*tm_cairo_scale) (cairo_t *cr, double sx, double sy);
 
46
 void (*tm_cairo_mask) (cairo_t *cr, cairo_pattern_t *pattern);
 
47
 void (*tm_cairo_set_operator) (cairo_t *cr, cairo_operator_t op);
 
48
 cairo_surface_t * (*tm_cairo_image_surface_create) (cairo_format_t format, int width, int height);
 
49
 void (*tm_cairo_paint) (cairo_t *cr);
 
50
 void (*tm_cairo_rectangle) (cairo_t *cr, double x, double y, double width, double height);
 
51
 void (*tm_cairo_set_line_cap) (cairo_t *cr, cairo_line_cap_t line_cap);
 
52
 void (*tm_cairo_set_line_join) (cairo_t *cr, cairo_line_join_t line_join);
 
53
 cairo_surface_t * (*tm_cairo_surface_reference) (cairo_surface_t *surface);
 
54
 void (*tm_cairo_line_to) (cairo_t *cr, double x, double y);
 
55
 cairo_status_t (*tm_cairo_status) (cairo_t *cr);
 
56
 void (*tm_cairo_show_page) (cairo_t *cr);
 
57
 cairo_t * (*tm_cairo_reference) (cairo_t *cr);
 
58
 cairo_t * (*tm_cairo_create) (cairo_surface_t *target);
 
59
 void (*tm_cairo_surface_destroy) (cairo_surface_t *surface);
 
60
 void (*tm_cairo_set_fill_rule) (cairo_t *cr, cairo_fill_rule_t fill_rule);
 
61
 void (*tm_cairo_destroy) (cairo_t *cr);
 
62
 void (*tm_cairo_save) (cairo_t *cr);
 
63
 void (*tm_cairo_set_source) (cairo_t *cr, cairo_pattern_t *source);
 
64
 int (*tm_cairo_image_surface_get_height) (cairo_surface_t *surface);
 
65
 void (*tm_cairo_mask_surface) (cairo_t *cr, cairo_surface_t *surface, double surface_x, double surface_y);
 
66
 
 
67
 
 
68
bool
 
69
tm_cairo_initialize () {
 
70
  if (tm_cairo_initialized) return tm_cairo_error;
 
71
  tm_cairo_initialized= true;
 
72
 
 
73
#ifdef LINKED_CAIRO
 
74
#define CAIRO_LINK(a,b) b = a
 
75
#else
 
76
#define CAIRO_LINK(LIBFUNC,LOCALFUNC) \
 
77
  (void) symbol_install ("/usr/lib/cairo.so", #LIBFUNC , (pointer&) LOCALFUNC); \
 
78
  if (LOCALFUNC == NULL) return true; 
 
79
  
 
80
  int status= debug_off ();
 
81
#endif
 
82
  
 
83
  CAIRO_LINK(cairo_move_to, tm_cairo_move_to);
 
84
  CAIRO_LINK(cairo_show_glyphs, tm_cairo_show_glyphs);
 
85
  CAIRO_LINK(cairo_font_face_status, tm_cairo_font_face_status);
 
86
  CAIRO_LINK(cairo_set_source_surface, tm_cairo_set_source_surface);
 
87
  CAIRO_LINK(cairo_new_path, tm_cairo_new_path);
 
88
  CAIRO_LINK(cairo_stroke, tm_cairo_stroke);
 
89
  CAIRO_LINK(cairo_font_face_set_user_data, tm_cairo_font_face_set_user_data);
 
90
  CAIRO_LINK(cairo_set_antialias, tm_cairo_set_antialias);
 
91
  CAIRO_LINK(cairo_set_font_size, tm_cairo_set_font_size);
 
92
  CAIRO_LINK(cairo_fill, tm_cairo_fill);
 
93
  CAIRO_LINK(cairo_set_source_rgba, tm_cairo_set_source_rgba);
 
94
  CAIRO_LINK(cairo_ps_surface_create, tm_cairo_ps_surface_create);
 
95
  CAIRO_LINK(cairo_status_to_string, tm_cairo_status_to_string);
 
96
  CAIRO_LINK(cairo_set_source_rgb, tm_cairo_set_source_rgb);
 
97
  CAIRO_LINK(cairo_close_path, tm_cairo_close_path);
 
98
  CAIRO_LINK(cairo_restore, tm_cairo_restore);
 
99
  CAIRO_LINK(cairo_translate, tm_cairo_translate);
 
100
  CAIRO_LINK(cairo_set_font_face, tm_cairo_set_font_face);
 
101
  CAIRO_LINK(cairo_font_face_destroy, tm_cairo_font_face_destroy);
 
102
  CAIRO_LINK(cairo_set_line_width, tm_cairo_set_line_width);
 
103
  CAIRO_LINK(cairo_image_surface_create_from_png, tm_cairo_image_surface_create_from_png);
 
104
  CAIRO_LINK(cairo_ft_font_face_create_for_ft_face, tm_cairo_ft_font_face_create_for_ft_face);
 
105
  CAIRO_LINK(cairo_image_surface_get_width, tm_cairo_image_surface_get_width);
 
106
  CAIRO_LINK(cairo_scale, tm_cairo_scale);
 
107
  CAIRO_LINK(cairo_mask, tm_cairo_mask);
 
108
  CAIRO_LINK(cairo_set_operator, tm_cairo_set_operator);
 
109
  CAIRO_LINK(cairo_image_surface_create, tm_cairo_image_surface_create);
 
110
  CAIRO_LINK(cairo_paint, tm_cairo_paint);
 
111
  CAIRO_LINK(cairo_rectangle, tm_cairo_rectangle);
 
112
  CAIRO_LINK(cairo_set_line_cap, tm_cairo_set_line_cap);
 
113
  CAIRO_LINK(cairo_set_line_join, tm_cairo_set_line_join);
 
114
  CAIRO_LINK(cairo_surface_reference, tm_cairo_surface_reference);
 
115
  CAIRO_LINK(cairo_line_to, tm_cairo_line_to);
 
116
  CAIRO_LINK(cairo_status, tm_cairo_status);
 
117
  CAIRO_LINK(cairo_show_page, tm_cairo_show_page);
 
118
  CAIRO_LINK(cairo_reference, tm_cairo_reference);
 
119
  CAIRO_LINK(cairo_create, tm_cairo_create);
 
120
  CAIRO_LINK(cairo_surface_destroy, tm_cairo_surface_destroy);
 
121
  CAIRO_LINK(cairo_set_fill_rule, tm_cairo_set_fill_rule);
 
122
  CAIRO_LINK(cairo_destroy, tm_cairo_destroy);
 
123
  CAIRO_LINK(cairo_save, tm_cairo_save);
 
124
  CAIRO_LINK(cairo_set_source, tm_cairo_set_source);
 
125
  CAIRO_LINK(cairo_image_surface_get_height, tm_cairo_image_surface_get_height);
 
126
  CAIRO_LINK(cairo_mask_surface, tm_cairo_mask_surface);
 
127
 
 
128
#undef CAIRO_LINK
 
129
#ifdef LINKED_CAIRO
 
130
  if (DEBUG_AUTO) cout << "TeXmacs] With linked Cairo support\n";
 
131
#else
 
132
  if (DEBUG_AUTO) cout << "TeXmacs] Installed Cairo support\n";
 
133
  debug_on (status);
 
134
#endif
 
135
  
 
136
  
 
137
  tm_cairo_error= false;
 
138
  return false;
 
139
}
 
140
 
 
141
bool
 
142
tm_cairo_present () {
 
143
  return !tm_cairo_initialize ();
 
144
}
 
145
 
 
146
#else
 
147
 
 
148
bool tm_cairo_initialize () { return true; }
 
149
bool tm_cairo_present () { return false; }
 
150
 
 
151
#endif