Cairo - lib graphique

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Cairo - lib graphique

Message par blendman »

salut

J'ai trouvé un sujet sur le forum Anglais à propos d'une lib basé sur Cairo (la bibliothèque graphique très intéressante , utilisée dans Mypaint, synfig, etc..) :
http://www.purebasic.fr/english/viewtop ... ilit=cairo

La version que j'ai trouvé sur le sujet est la 1.8, mais elle est déjà très sympathique, notamment pour zoomer ou faire une rotation de la surface de travail, c'est top :D.

Si par hasard quelqu'un a la dernière version proposée (la 1.10 sur le sujet), cela m'intéresse grandement :D.
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Re: Cairo - lib graphique

Message par Frenchy Pilou »

Est beau ce qui plaît sans concept :)
Speedy Galerie
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Cairo - lib graphique

Message par kernadec »

bonjour blendman
Pas tout compris dans ta demande, car l'adresse de "DoubleDutch" --> http://ɯoɔ.com/downloads/cairo.zip
sur le forum english http://www.purebasic.fr/english/viewtop ... 27&t=34999

la librairie de l'archive est en version 1.12
pourquoi recherche tu la version 1.10

Cordialement
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Cairo - lib graphique

Message par kernadec »

@blendman
si tu télécharge "Dia" qui utilise Cairo que tu l'installeras -->: http://sourceforge.net/projects/dia-installer/
tu auras les 3 lib récentes de "cairo sous Windows"
qui sont fournie avec ce programme
elles sont aussi dans "inskape"

libcairo-2.dll
libpng12-0.dll : celle-ci semble inchangée
libpng14-14.dll

libcairo-2 passe à 320 fonctions, Avant il n'y en avait que 271.

Cordialement

Code : Tout sélectionner

;{-Liste de 320 Fonctions de la DLL: libcairo-2.dll
; 1 :  cairo_append_path
; 2 :  cairo_arc
; 3 :  cairo_arc_negative
; 4 :  cairo_clip
; 5 :  cairo_clip_extents
; 6 :  cairo_clip_preserve
; 7 :  cairo_close_path
; 8 :  cairo_copy_clip_rectangle_list
; 9 :  cairo_copy_page
; 10 :  cairo_copy_path
; 11 :  cairo_copy_path_flat
; 12 :  cairo_create
; 13 :  cairo_curve_to
; 14 :  cairo_debug_reset_static_data
; 15 :  cairo_destroy
; 16 :  cairo_device_acquire
; 17 :  cairo_device_destroy
; 18 :  cairo_device_finish
; 19 :  cairo_device_flush
; 20 :  cairo_device_get_reference_count
; 21 :  cairo_device_get_type
; 22 :  cairo_device_get_user_data
; 23 :  cairo_device_reference
; 24 :  cairo_device_release
; 25 :  cairo_device_set_user_data
; 26 :  cairo_device_status
; 27 :  cairo_device_to_user
; 28 :  cairo_device_to_user_distance
; 29 :  cairo_fill
; 30 :  cairo_fill_extents
; 31 :  cairo_fill_preserve
; 32 :  cairo_font_extents
; 33 :  cairo_font_face_destroy
; 34 :  cairo_font_face_get_reference_count
; 35 :  cairo_font_face_get_type
; 36 :  cairo_font_face_get_user_data
; 37 :  cairo_font_face_reference
; 38 :  cairo_font_face_set_user_data
; 39 :  cairo_font_face_status
; 40 :  cairo_font_options_copy
; 41 :  cairo_font_options_create
; 42 :  cairo_font_options_destroy
; 43 :  cairo_font_options_equal
; 44 :  cairo_font_options_get_antialias
; 45 :  cairo_font_options_get_hint_metrics
; 46 :  cairo_font_options_get_hint_style
; 47 :  cairo_font_options_get_subpixel_order
; 48 :  cairo_font_options_hash
; 49 :  cairo_font_options_merge
; 50 :  cairo_font_options_set_antialias
; 51 :  cairo_font_options_set_hint_metrics
; 52 :  cairo_font_options_set_hint_style
; 53 :  cairo_font_options_set_subpixel_order
; 54 :  cairo_font_options_status
; 55 :  cairo_format_stride_for_width
; 56 :  cairo_ft_font_face_create_for_ft_face
; 57 :  cairo_ft_font_face_create_for_pattern
; 58 :  cairo_ft_font_options_substitute
; 59 :  cairo_ft_scaled_font_lock_face
; 60 :  cairo_ft_scaled_font_unlock_face
; 61 :  cairo_get_antialias
; 62 :  cairo_get_current_point
; 63 :  cairo_get_dash
; 64 :  cairo_get_dash_count
; 65 :  cairo_get_fill_rule
; 66 :  cairo_get_font_face
; 67 :  cairo_get_font_matrix
; 68 :  cairo_get_font_options
; 69 :  cairo_get_group_target
; 70 :  cairo_get_line_cap
; 71 :  cairo_get_line_join
; 72 :  cairo_get_line_width
; 73 :  cairo_get_matrix
; 74 :  cairo_get_miter_limit
; 75 :  cairo_get_operator
; 76 :  cairo_get_reference_count
; 77 :  cairo_get_scaled_font
; 78 :  cairo_get_source
; 79 :  cairo_get_target
; 80 :  cairo_get_tolerance
; 81 :  cairo_get_user_data
; 82 :  cairo_glyph_allocate
; 83 :  cairo_glyph_extents
; 84 :  cairo_glyph_free
; 85 :  cairo_glyph_path
; 86 :  cairo_has_current_point
; 87 :  cairo_identity_matrix
; 88 :  cairo_image_surface_create
; 89 :  cairo_image_surface_create_for_data
; 90 :  cairo_image_surface_create_from_png
; 91 :  cairo_image_surface_create_from_png_stream
; 92 :  cairo_image_surface_get_data
; 93 :  cairo_image_surface_get_format
; 94 :  cairo_image_surface_get_height
; 95 :  cairo_image_surface_get_stride
; 96 :  cairo_image_surface_get_width
; 97 :  cairo_in_clip
; 98 :  cairo_in_fill
; 99 :  cairo_in_stroke
; 100 :  cairo_line_to
; 101 :  cairo_mask
; 102 :  cairo_mask_surface
; 103 :  cairo_matrix_init
; 104 :  cairo_matrix_init_identity
; 105 :  cairo_matrix_init_rotate
; 106 :  cairo_matrix_init_scale
; 107 :  cairo_matrix_init_translate
; 108 :  cairo_matrix_invert
; 109 :  cairo_matrix_multiply
; 110 :  cairo_matrix_rotate
; 111 :  cairo_matrix_scale
; 112 :  cairo_matrix_transform_distance
; 113 :  cairo_matrix_transform_point
; 114 :  cairo_matrix_translate
; 115 :  cairo_move_to
; 116 :  cairo_new_path
; 117 :  cairo_new_sub_path
; 118 :  cairo_paint
; 119 :  cairo_paint_with_alpha
; 120 :  cairo_path_destroy
; 121 :  cairo_path_extents
; 122 :  cairo_pattern_add_color_stop_rgb
; 123 :  cairo_pattern_add_color_stop_rgba
; 124 :  cairo_pattern_create_for_surface
; 125 :  cairo_pattern_create_linear
; 126 :  cairo_pattern_create_radial
; 127 :  cairo_pattern_create_rgb
; 128 :  cairo_pattern_create_rgba
; 129 :  cairo_pattern_destroy
; 130 :  cairo_pattern_get_color_stop_count
; 131 :  cairo_pattern_get_color_stop_rgba
; 132 :  cairo_pattern_get_extend
; 133 :  cairo_pattern_get_filter
; 134 :  cairo_pattern_get_linear_points
; 135 :  cairo_pattern_get_matrix
; 136 :  cairo_pattern_get_radial_circles
; 137 :  cairo_pattern_get_reference_count
; 138 :  cairo_pattern_get_rgba
; 139 :  cairo_pattern_get_surface
; 140 :  cairo_pattern_get_type
; 141 :  cairo_pattern_get_user_data
; 142 :  cairo_pattern_reference
; 143 :  cairo_pattern_set_extend
; 144 :  cairo_pattern_set_filter
; 145 :  cairo_pattern_set_matrix
; 146 :  cairo_pattern_set_user_data
; 147 :  cairo_pattern_status
; 148 :  cairo_pdf_get_versions
; 149 :  cairo_pdf_surface_create
; 150 :  cairo_pdf_surface_create_for_stream
; 151 :  cairo_pdf_surface_restrict_to_version
; 152 :  cairo_pdf_surface_set_size
; 153 :  cairo_pdf_version_to_string
; 154 :  cairo_pop_group
; 155 :  cairo_pop_group_to_source
; 156 :  cairo_ps_get_levels
; 157 :  cairo_ps_level_to_string
; 158 :  cairo_ps_surface_create
; 159 :  cairo_ps_surface_create_for_stream
; 160 :  cairo_ps_surface_dsc_begin_page_setup
; 161 :  cairo_ps_surface_dsc_begin_setup
; 162 :  cairo_ps_surface_dsc_comment
; 163 :  cairo_ps_surface_get_eps
; 164 :  cairo_ps_surface_restrict_to_level
; 165 :  cairo_ps_surface_set_eps
; 166 :  cairo_ps_surface_set_size
; 167 :  cairo_push_group
; 168 :  cairo_push_group_with_content
; 169 :  cairo_recording_surface_create
; 170 :  cairo_recording_surface_ink_extents
; 171 :  cairo_rectangle
; 172 :  cairo_rectangle_list_destroy
; 173 :  cairo_reference
; 174 :  cairo_region_contains_point
; 175 :  cairo_region_contains_rectangle
; 176 :  cairo_region_copy
; 177 :  cairo_region_create
; 178 :  cairo_region_create_rectangle
; 179 :  cairo_region_create_rectangles
; 180 :  cairo_region_destroy
; 181 :  cairo_region_equal
; 182 :  cairo_region_get_extents
; 183 :  cairo_region_get_rectangle
; 184 :  cairo_region_intersect
; 185 :  cairo_region_intersect_rectangle
; 186 :  cairo_region_is_empty
; 187 :  cairo_region_num_rectangles
; 188 :  cairo_region_reference
; 189 :  cairo_region_status
; 190 :  cairo_region_subtract
; 191 :  cairo_region_subtract_rectangle
; 192 :  cairo_region_translate
; 193 :  cairo_region_union
; 194 :  cairo_region_union_rectangle
; 195 :  cairo_region_xor
; 196 :  cairo_region_xor_rectangle
; 197 :  cairo_rel_curve_to
; 198 :  cairo_rel_line_to
; 199 :  cairo_rel_move_to
; 200 :  cairo_reset_clip
; 201 :  cairo_restore
; 202 :  cairo_rotate
; 203 :  cairo_save
; 204 :  cairo_scale
; 205 :  cairo_scaled_font_create
; 206 :  cairo_scaled_font_destroy
; 207 :  cairo_scaled_font_extents
; 208 :  cairo_scaled_font_get_ctm
; 209 :  cairo_scaled_font_get_font_face
; 210 :  cairo_scaled_font_get_font_matrix
; 211 :  cairo_scaled_font_get_font_options
; 212 :  cairo_scaled_font_get_reference_count
; 213 :  cairo_scaled_font_get_scale_matrix
; 214 :  cairo_scaled_font_get_type
; 215 :  cairo_scaled_font_get_user_data
; 216 :  cairo_scaled_font_glyph_extents
; 217 :  cairo_scaled_font_reference
; 218 :  cairo_scaled_font_set_user_data
; 219 :  cairo_scaled_font_status
; 220 :  cairo_scaled_font_text_extents
; 221 :  cairo_scaled_font_text_to_glyphs
; 222 :  cairo_select_font_face
; 223 :  cairo_set_antialias
; 224 :  cairo_set_dash
; 225 :  cairo_set_fill_rule
; 226 :  cairo_set_font_face
; 227 :  cairo_set_font_matrix
; 228 :  cairo_set_font_options
; 229 :  cairo_set_font_size
; 230 :  cairo_set_line_cap
; 231 :  cairo_set_line_join
; 232 :  cairo_set_line_width
; 233 :  cairo_set_matrix
; 234 :  cairo_set_miter_limit
; 235 :  cairo_set_operator
; 236 :  cairo_set_scaled_font
; 237 :  cairo_set_source
; 238 :  cairo_set_source_rgb
; 239 :  cairo_set_source_rgba
; 240 :  cairo_set_source_surface
; 241 :  cairo_set_tolerance
; 242 :  cairo_set_user_data
; 243 :  cairo_show_glyphs
; 244 :  cairo_show_page
; 245 :  cairo_show_text
; 246 :  cairo_show_text_glyphs
; 247 :  cairo_status
; 248 :  cairo_status_to_string
; 249 :  cairo_stroke
; 250 :  cairo_stroke_extents
; 251 :  cairo_stroke_preserve
; 252 :  cairo_surface_copy_page
; 253 :  cairo_surface_create_for_rectangle
; 254 :  cairo_surface_create_similar
; 255 :  cairo_surface_destroy
; 256 :  cairo_surface_finish
; 257 :  cairo_surface_flush
; 258 :  cairo_surface_get_content
; 259 :  cairo_surface_get_device
; 260 :  cairo_surface_get_device_offset
; 261 :  cairo_surface_get_fallback_resolution
; 262 :  cairo_surface_get_font_options
; 263 :  cairo_surface_get_mime_data
; 264 :  cairo_surface_get_reference_count
; 265 :  cairo_surface_get_type
; 266 :  cairo_surface_get_user_data
; 267 :  cairo_surface_has_show_text_glyphs
; 268 :  cairo_surface_mark_dirty
; 269 :  cairo_surface_mark_dirty_rectangle
; 270 :  cairo_surface_reference
; 271 :  cairo_surface_set_device_offset
; 272 :  cairo_surface_set_fallback_resolution
; 273 :  cairo_surface_set_mime_data
; 274 :  cairo_surface_set_user_data
; 275 :  cairo_surface_show_page
; 276 :  cairo_surface_status
; 277 :  cairo_surface_write_to_png
; 278 :  cairo_surface_write_to_png_stream
; 279 :  cairo_svg_get_versions
; 280 :  cairo_svg_surface_create
; 281 :  cairo_svg_surface_create_for_stream
; 282 :  cairo_svg_surface_restrict_to_version
; 283 :  cairo_svg_version_to_string
; 284 :  cairo_text_cluster_allocate
; 285 :  cairo_text_cluster_free
; 286 :  cairo_text_extents
; 287 :  cairo_text_path
; 288 :  cairo_toy_font_face_create
; 289 :  cairo_toy_font_face_get_family
; 290 :  cairo_toy_font_face_get_slant
; 291 :  cairo_toy_font_face_get_weight
; 292 :  cairo_transform
; 293 :  cairo_translate
; 294 :  cairo_user_font_face_create
; 295 :  cairo_user_font_face_get_init_func
; 296 :  cairo_user_font_face_get_render_glyph_func
; 297 :  cairo_user_font_face_get_text_to_glyphs_func
; 298 :  cairo_user_font_face_get_unicode_to_glyph_func
; 299 :  cairo_user_font_face_set_init_func
; 300 :  cairo_user_font_face_set_render_glyph_func
; 301 :  cairo_user_font_face_set_text_to_glyphs_func
; 302 :  cairo_user_font_face_set_unicode_to_glyph_func
; 303 :  cairo_user_to_device
; 304 :  cairo_user_to_device_distance
; 305 :  cairo_version
; 306 :  cairo_version_string
; 307 :  cairo_win32_font_face_create_for_hfont
; 308 :  cairo_win32_font_face_create_for_logfontw
; 309 :  cairo_win32_font_face_create_for_logfontw_hfont
; 310 :  cairo_win32_printing_surface_create
; 311 :  cairo_win32_scaled_font_done_font
; 312 :  cairo_win32_scaled_font_get_device_to_logical
; 313 :  cairo_win32_scaled_font_get_logical_to_device
; 314 :  cairo_win32_scaled_font_get_metrics_factor
; 315 :  cairo_win32_scaled_font_select_font
; 316 :  cairo_win32_surface_create
; 317 :  cairo_win32_surface_create_with_ddb
; 318 :  cairo_win32_surface_create_with_dib
; 319 :  cairo_win32_surface_get_dc
; 320 :  cairo_win32_surface_get_image
Dernière modification par kernadec le lun. 09/juil./2012 13:09, modifié 1 fois.
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Cairo - lib graphique

Message par kernadec »

Bonjour

l'exemple "test_cairo.pb" concluant en l'état.
avec les librairies de Dia et d' Inkscape
mais il faudra implémenter les nouvelles fonctions à la lib: cairo180.pbi

bien sur ces librairies ont été compilées par les auteurs de Dia et d' Inkscape
dans leurs disposions, en même temps Cairo est Open Sources.
mais pour tester Cairo et se donner une idées de ses possibilités.
Ainsi nous pourrons ainsi compiler nos propres librairies Cairo
à partir du code source "C".

Avec Inkscape 48.31 --> http://sourceforge.net/projects/inkscap ... /inkscape/
la lib Cairo est compilée dans une autre disposition,
car libcairo-2.dll est différent en octet de celui de DIA
et il fait appel a une lib supplémentaires "libpixman-1-0.dll"
ce qui donne 337 fonctions cette fois.

nom et Taille des fichiers.dll compilés pour Inkscape
libcairo-2.dll 925 304 octets
libpixman-1-0.dll 563 458 octets
libpng14-14.dll 230 529 octets
libpng12-0.dll 223 915 octets

Nom et Taille des fichiers.dll compilés pour Dia
libcairo-2.dll 1 294 335 octets
libpng12-0.dll 182 015 octets
libpng14-14.dll 184 262 octets

ci-dessous par rapport à Dia
les 17 fonctions supplémentaires d' Inkscape

Cordialement

Code : Tout sélectionner

cairo_pattern_create_mesh 
cairo_pattern_mesh_begin_patch                        
cairo_pattern_mesh_curve_to                              
cairo_pattern_mesh_end_patch                             
cairo_pattern_mesh_get_control_point                     
cairo_pattern_mesh_get_corner_color_rgba                 
cairo_pattern_mesh_get_patch_count                     
cairo_pattern_mesh_get_path                              
cairo_pattern_mesh_line_to                              
cairo_pattern_mesh_move_to                               
cairo_pattern_mesh_set_control_point                    
cairo_pattern_mesh_set_corner_color_rgb                  
cairo_pattern_mesh_set_corner_color_rgba                  
cairo_tee_surface_add                             		
cairo_tee_surface_create                         		
cairo_tee_surface_index                          		
cairo_tee_surface_remove                          		
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Cairo - lib graphique

Message par blendman »

kernadec a écrit :Pas tout compris dans ta demande
dans le lien que j'ai donné, il y a 2 adresse, dont 1 lien qui ne marche plus ^^.

J'ai donc télécharger le 2ème (le zip de double dutch)

car l'adresse de "DoubleDutch" --> http://ɯoɔ.com/downloads/cairo.zip
sur le forum english http://www.purebasic.fr/english/viewtop ... 27&t=34999

la librairie de l'archive est en version 1.12
pourquoi recherche tu la version 1.10
heu, en ouvrant le zip, l'exemple dedans est basé sur la version 1.8 de Cairo, et non la 1.12 ;) Pourquoi dis-tu que c'est la 1.12, on dirait la 1.8, d'autant que si on fait version , on a bien cairo version 1.8 dans l'exemple pb fourni :D ?

Là, un utilisateur (Hichem) a réalisé une librairie avec la plupart des fonctions de Cairo, pour Purebasic.

Sinon, comment faire pour utiliser une lib externe (ddl ou lib) comme cairo avec purebasic ?

D'après la doc, il faut utiliser ce genre de code, mais comment connaitre les fonctions précises et ensuite les utiliser (si on ne part pas de la lib fournie parHichem) ?

Code : Tout sélectionner

If OpenLibrary(0, "libcairo-2.dll")
      
        ;*MessageBox = GetFunction(0, "MessageBoxA")
       ; If *MessageBox
         ; CallFunctionFast(*MessageBox, 0, @"Body", @"Title", 0)
       ; EndIf
        
        CloseLibrary(0)
EndIf
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Cairo - lib graphique

Message par kernadec »

bonjour blendman
il faut Visual studio 2008 en version gratuite, et créer à partir de la librairie "libcairo-2.dll" le fichier: "libcairo-2.lib"

sinon, avec le programme link.exe qui est installé avec VisualBasic et qui se trouve dans "windows\system32\link.exe"

depuis la fenêtre cmd en deux passes, car il faut créer un fichier.def

link -dump -exports libcairo-2.dll | sed -nf exports.sed >> libcairo-2.def
link -lib -machine:X86 -def:libcairo-2.def -out:libcairo-2.lib

pour les fonctions de cairo sur son site il y a le détail.
Cordialement
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Cairo - lib graphique

Message par kernadec »

bonjour blendman

Case avait indiqué le lien :)
mais j' avais la tête ailleurs :(

alors voila l'adresse pour la version 1.10-2-2 pour win32 pour Cairo
http://www.gtk.org/download/win32.php

Cairo run-time : pour 1.10-2-2 avec 320 fonctions énumérées dans le post précédent
cairo dev : "Cairo.lib" est dans le dossier lib de l'archive dev

idem.. pour les autres : zlib, libpng, etc..

Cordialement
Répondre