gtk2 0.90.4-x86-mingw32 → 0.90.5-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. data/ChangeLog +4 -0
  2. data/Rakefile +3 -4
  3. data/ext/gtk2/extconf.rb +8 -0
  4. data/lib/1.8/gtk2.so +0 -0
  5. data/lib/1.9/gtk2.so +0 -0
  6. data/vendor/local/bin/gtk-demo.exe +0 -0
  7. data/vendor/local/bin/gtk-query-immodules-2.0.exe +0 -0
  8. data/vendor/local/bin/gtk-update-icon-cache.exe +0 -0
  9. data/vendor/local/bin/libgailutil-18.dll +0 -0
  10. data/vendor/local/bin/libgdk-win32-2.0-0.dll +0 -0
  11. data/vendor/local/bin/libgtk-win32-2.0-0.dll +0 -0
  12. data/vendor/local/bin/libpango-1.0-0.dll +0 -0
  13. data/vendor/local/bin/libpangocairo-1.0-0.dll +0 -0
  14. data/vendor/local/bin/libpangoft2-1.0-0.dll +0 -0
  15. data/vendor/local/bin/libpangowin32-1.0-0.dll +0 -0
  16. data/vendor/local/bin/pango-querymodules.exe +0 -0
  17. data/vendor/local/bin/pango-view.exe +0 -0
  18. data/vendor/local/bin/pkg-config.exe +0 -0
  19. data/vendor/local/etc/gtk-2.0/gtk.immodules +1 -1
  20. data/vendor/local/etc/pango/pango.modules +1 -1
  21. data/vendor/local/gtk+-bundle_2.22.0-20101016_win32.README.txt +29 -0
  22. data/vendor/local/include/pango-1.0/pango/pango-enum-types.h +2 -2
  23. data/vendor/local/include/pango-1.0/pango/pango-features.h +2 -2
  24. data/vendor/local/include/pixman-1/pixman-version.h +50 -0
  25. data/vendor/local/include/pixman-1/pixman.h +936 -0
  26. data/vendor/local/lib/gailutil.lib +0 -0
  27. data/vendor/local/lib/gdk-win32-2.0.lib +0 -0
  28. data/vendor/local/lib/gtk-2.0/2.10.0/engines/libpixmap.dll +0 -0
  29. data/vendor/local/lib/gtk-2.0/2.10.0/engines/libwimp.dll +0 -0
  30. data/vendor/local/lib/gtk-2.0/modules/libgail.dll +0 -0
  31. data/vendor/local/lib/gtk-win32-2.0.lib +0 -0
  32. data/vendor/local/lib/libgailutil.dll.a +0 -0
  33. data/vendor/local/lib/libgdk-win32-2.0.dll.a +0 -0
  34. data/vendor/local/lib/libgtk-win32-2.0.dll.a +0 -0
  35. data/vendor/local/lib/libpango-1.0.dll.a +0 -0
  36. data/vendor/local/lib/libpangocairo-1.0.dll.a +0 -0
  37. data/vendor/local/lib/libpangoft2-1.0.dll.a +0 -0
  38. data/vendor/local/lib/libpangowin32-1.0.dll.a +0 -0
  39. data/vendor/local/lib/libpixman-1.a +0 -0
  40. data/vendor/local/lib/pango-1.0.lib +0 -0
  41. data/vendor/local/lib/pangocairo-1.0.lib +0 -0
  42. data/vendor/local/lib/pangoft2-1.0.lib +0 -0
  43. data/vendor/local/lib/pangowin32-1.0.lib +0 -0
  44. data/vendor/local/lib/pkgconfig/gail.pc +1 -1
  45. data/vendor/local/lib/pkgconfig/gdk-2.0.pc +1 -1
  46. data/vendor/local/lib/pkgconfig/gdk-win32-2.0.pc +1 -1
  47. data/vendor/local/lib/pkgconfig/gtk+-2.0.pc +1 -1
  48. data/vendor/local/lib/pkgconfig/gtk+-win32-2.0.pc +1 -1
  49. data/vendor/local/lib/pkgconfig/pango.pc +2 -2
  50. data/vendor/local/lib/pkgconfig/pangocairo.pc +2 -2
  51. data/vendor/local/lib/pkgconfig/pangoft2.pc +2 -2
  52. data/vendor/local/lib/pkgconfig/pangowin32.pc +2 -2
  53. data/vendor/local/lib/pkgconfig/pixman-1.pc +11 -0
  54. data/vendor/local/manifest/gtk+-bundle_2.22.0-20101016_win32.mft +2910 -0
  55. data/vendor/local/manifest/{pango-dev_1.28.1-2_win32.mft → pango-dev_1.28.3-1_win32.mft} +5 -5
  56. data/vendor/local/manifest/{pango_1.28.1-2_win32.mft → pango_1.28.3-1_win32.mft} +2 -2
  57. data/vendor/local/share/aclocal/pkg.m4 +155 -0
  58. data/vendor/local/share/doc/gtk+-bundle_2.22.0-20101016_win32/components.lst +28 -0
  59. data/vendor/local/share/doc/{pango-1.28.1 → pango-1.28.3}/COPYING +0 -0
  60. data/vendor/local/share/doc/{pango-dev-1.28.1 → pango-dev-1.28.3}/COPYING +0 -0
  61. data/vendor/local/share/gtk-doc/html/pango/PangoEngineLang.html +44 -50
  62. data/vendor/local/share/gtk-doc/html/pango/PangoEngineShape.html +45 -51
  63. data/vendor/local/share/gtk-doc/html/pango/PangoFcDecoder.html +44 -61
  64. data/vendor/local/share/gtk-doc/html/pango/PangoFcFont.html +89 -101
  65. data/vendor/local/share/gtk-doc/html/pango/PangoFcFontMap.html +173 -171
  66. data/vendor/local/share/gtk-doc/html/pango/PangoMarkupFormat.html +6 -27
  67. data/vendor/local/share/gtk-doc/html/pango/index-1.10.html +3 -24
  68. data/vendor/local/share/gtk-doc/html/pango/index-1.12.html +3 -24
  69. data/vendor/local/share/gtk-doc/html/pango/index-1.14.html +3 -24
  70. data/vendor/local/share/gtk-doc/html/pango/index-1.16.html +3 -24
  71. data/vendor/local/share/gtk-doc/html/pango/index-1.18.html +5 -26
  72. data/vendor/local/share/gtk-doc/html/pango/index-1.2.html +3 -24
  73. data/vendor/local/share/gtk-doc/html/pango/index-1.20.html +5 -26
  74. data/vendor/local/share/gtk-doc/html/pango/index-1.22.html +5 -26
  75. data/vendor/local/share/gtk-doc/html/pango/index-1.24.html +3 -24
  76. data/vendor/local/share/gtk-doc/html/pango/index-1.26.html +3 -24
  77. data/vendor/local/share/gtk-doc/html/pango/index-1.28.html +3 -24
  78. data/vendor/local/share/gtk-doc/html/pango/index-1.4.html +3 -24
  79. data/vendor/local/share/gtk-doc/html/pango/index-1.6.html +6 -27
  80. data/vendor/local/share/gtk-doc/html/pango/index-1.8.html +22 -43
  81. data/vendor/local/share/gtk-doc/html/pango/index-all.html +70 -91
  82. data/vendor/local/share/gtk-doc/html/pango/index-deprecated.html +3 -24
  83. data/vendor/local/share/gtk-doc/html/pango/index.html +5 -26
  84. data/vendor/local/share/gtk-doc/html/pango/index.sgml +31 -30
  85. data/vendor/local/share/gtk-doc/html/pango/lowlevel.html +6 -27
  86. data/vendor/local/share/gtk-doc/html/pango/pango-ATSUI-Fonts.html +20 -39
  87. data/vendor/local/share/gtk-doc/html/pango/pango-Bidirectional-Text.html +73 -88
  88. data/vendor/local/share/gtk-doc/html/pango/pango-Cairo-Rendering.html +405 -320
  89. data/vendor/local/share/gtk-doc/html/pango/pango-Coverage-Maps.html +85 -97
  90. data/vendor/local/share/gtk-doc/html/pango/pango-Engines.html +69 -84
  91. data/vendor/local/share/gtk-doc/html/pango/pango-Fonts.html +695 -645
  92. data/vendor/local/share/gtk-doc/html/pango/pango-FreeType-Fonts-and-Rendering.html +225 -228
  93. data/vendor/local/share/gtk-doc/html/pango/pango-Glyph-Storage.html +523 -494
  94. data/vendor/local/share/gtk-doc/html/pango/pango-Layout-Objects.html +819 -742
  95. data/vendor/local/share/gtk-doc/html/pango/pango-Miscellaneous-Utilities.html +203 -204
  96. data/vendor/local/share/gtk-doc/html/pango/pango-Modules.html +58 -75
  97. data/vendor/local/share/gtk-doc/html/pango/pango-OpenType-Font-Handling.html +422 -405
  98. data/vendor/local/share/gtk-doc/html/pango/pango-Scripts-and-Languages.html +144 -142
  99. data/vendor/local/share/gtk-doc/html/pango/pango-Tab-Stops.html +120 -130
  100. data/vendor/local/share/gtk-doc/html/pango/pango-Text-Attributes.html +618 -576
  101. data/vendor/local/share/gtk-doc/html/pango/pango-Text-Processing.html +397 -384
  102. data/vendor/local/share/gtk-doc/html/pango/pango-Version-Checking.html +44 -58
  103. data/vendor/local/share/gtk-doc/html/pango/pango-Vertical-Text.html +73 -84
  104. data/vendor/local/share/gtk-doc/html/pango/pango-Win32-Fonts-and-Rendering.html +220 -217
  105. data/vendor/local/share/gtk-doc/html/pango/pango-X-Fonts-and-Rendering.html +303 -302
  106. data/vendor/local/share/gtk-doc/html/pango/pango-Xft-Fonts-and-Rendering.html +293 -292
  107. data/vendor/local/share/gtk-doc/html/pango/pango-hierarchy.html +5 -26
  108. data/vendor/local/share/gtk-doc/html/pango/pango-pango-renderer.html +1009 -0
  109. data/vendor/local/share/gtk-doc/html/pango/pango-querymodules.html +7 -28
  110. data/vendor/local/share/gtk-doc/html/pango/pango.devhelp +68 -68
  111. data/vendor/local/share/gtk-doc/html/pango/pango.devhelp2 +72 -72
  112. data/vendor/local/share/gtk-doc/html/pango/pango.html +3 -24
  113. data/vendor/local/share/gtk-doc/html/pango/rendering.html +3 -24
  114. data/vendor/local/share/gtk-doc/html/pango/style.css +21 -13
  115. data/vendor/local/share/gtk-doc/html/pango/tools.html +3 -24
  116. data/vendor/local/share/man/man1/pango-querymodules.1 +2 -2
  117. data/vendor/local/share/man/man1/pango-view.1 +1 -1
  118. data/vendor/local/src/tml/packaging/{gtk+_2.22.0-1_win32.log → gtk+_2.22.0-2_win32.log} +1835 -1832
  119. data/vendor/local/src/tml/packaging/{gtk+_2.22.0-1_win32.sh → gtk+_2.22.0-2_win32.sh} +26 -1
  120. data/vendor/local/src/tml/packaging/{pango_1.28.1-2_win32.log → pango_1.28.3-1_win32.log} +293 -413
  121. data/vendor/local/src/tml/packaging/pango_1.28.3-1_win32.sh +56 -0
  122. data/vendor/local/src/tml/packaging/pixman_0.18.4-2_win32.log +291 -0
  123. data/vendor/local/src/tml/packaging/pixman_0.18.4-2_win32.sh +141 -0
  124. data/vendor/local/src/tml/packaging/pkg-config_0.23-3_win32.log +215 -0
  125. data/vendor/local/src/tml/packaging/pkg-config_0.23-3_win32.sh +278 -0
  126. metadata +3323 -3325
  127. data/ext/gtk2/Makefile +0 -163
  128. data/ext/gtk2/rbgdkkeysyms.h +0 -1708
  129. data/ext/gtk2/rbgtkinits.c +0 -469
  130. data/vendor/local/manifest/cairo-dev_1.10.0-1_win32.mft +0 -83
  131. data/vendor/local/manifest/cairo_1.10.0-1_win32.mft +0 -5
  132. data/vendor/local/manifest/expat-dev_2.0.1-1_win32.mft +0 -10
  133. data/vendor/local/manifest/expat_2.0.1-1_win32.mft +0 -2
  134. data/vendor/local/manifest/fontconfig-dev_2.8.0-2_win32.mft +0 -387
  135. data/vendor/local/manifest/fontconfig_2.8.0-2_win32.mft +0 -3
  136. data/vendor/local/manifest/freetype-dev_2.4.2-1_win32.mft +0 -56
  137. data/vendor/local/manifest/freetype_2.4.2-1_win32.mft +0 -2
  138. data/vendor/local/manifest/gtk+-dev_2.22.0-1_win32.mft +0 -947
  139. data/vendor/local/manifest/gtk+_2.22.0-1_win32.mft +0 -225
  140. data/vendor/local/manifest/libpng-dev_1.4.3-1_win32.mft +0 -15
  141. data/vendor/local/manifest/libpng_1.4.3-1_win32.mft +0 -2
  142. data/vendor/local/share/gtk-doc/html/pango/PangoRenderer.html +0 -1002
  143. data/vendor/local/src/tml/packaging/pango_1.28.1-2_win32.sh +0 -579
data/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ 2010-10-26 Kouhei Sutou <kou@cozmixng.org>
2
+
3
+ * Rakefile: "=" -> ">=" for depended atk version.
4
+
1
5
  2010-10-17 Kouhei Sutou <kou@cozmixng.org>
2
6
 
3
7
  * ext/gtk2/rbgdkcairo.c: move GDK and cairo related code from
data/Rakefile CHANGED
@@ -43,7 +43,7 @@ spec = Gem::Specification.new do |s|
43
43
  s.add_dependency("glib2", ">= #{compatible_version}")
44
44
  s.add_dependency("pango", ">= #{compatible_version}")
45
45
  s.add_dependency("gdk_pixbuf2", ">= #{compatible_version}")
46
- s.add_dependency("atk", "= #{compatible_version}")
46
+ s.add_dependency("atk", ">= #{compatible_version}")
47
47
  s.extensions = FileList["ext/#{package_name}/extconf.rb"]
48
48
  s.require_paths = ["lib"]
49
49
  s.files = FileList["ChangeLog", "README", "Rakefile", "extconf.rb",
@@ -73,9 +73,8 @@ namespace :win32 do
73
73
  task :download do
74
74
  $LOAD_PATH.unshift((@rb_glib2_dir + "lib").to_s)
75
75
  require 'gnome2-win32-binary-downloader'
76
- packages = ["glib", "atk", "gdk-pixbuf", "pango", "gtk+"]
77
- dependencies = ["gettext-runtime", "zlib", "freetype", "expat",
78
- "fontconfig", "cairo", "libpng"]
76
+ packages = ["gtk+"]
77
+ dependencies = []
79
78
  GNOME2Win32BinaryDownloader.download(:packages => packages,
80
79
  :dependencies => dependencies)
81
80
  end
data/ext/gtk2/extconf.rb CHANGED
@@ -205,3 +205,11 @@ ensure_objs
205
205
 
206
206
  $defs << "-DRUBY_GTK2_COMPILATION"
207
207
  create_makefile(module_name)
208
+
209
+ pkg_config_dir = with_config("pkg-config-dir")
210
+ if pkg_config_dir.is_a?(String)
211
+ File.open("Makefile", "ab") do |makefile|
212
+ makefile.puts
213
+ makefile.puts("pkgconfigdir=#{pkg_config_dir}")
214
+ end
215
+ end
data/lib/1.8/gtk2.so CHANGED
Binary file
data/lib/1.9/gtk2.so CHANGED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,4 +1,4 @@
1
1
  # GTK+ Input Method Modules file
2
2
  #
3
- # ModulesPath = c:\Users\tml\.gtk-2.0\2.10.0\i686-pc-mingw32\immodules;c:\Users\tml\.gtk-2.0\2.10.0\immodules;c:\Users\tml\.gtk-2.0\i686-pc-mingw32\immodules;c:\Users\tml\.gtk-2.0\immodules;c:\devel\target\9962736c19ef5680e0566e9250da06e2\lib\gtk-2.0\2.10.0\i686-pc-mingw32\immodules;c:\devel\target\9962736c19ef5680e0566e9250da06e2\lib\gtk-2.0\2.10.0\immodules;c:\devel\target\9962736c19ef5680e0566e9250da06e2\lib\gtk-2.0\i686-pc-mingw32\immodules;c:\devel\target\9962736c19ef5680e0566e9250da06e2\lib\gtk-2.0\immodules
3
+ # ModulesPath = c:\Users\tml\.gtk-2.0\2.10.0\i686-pc-mingw32\immodules;c:\Users\tml\.gtk-2.0\2.10.0\immodules;c:\Users\tml\.gtk-2.0\i686-pc-mingw32\immodules;c:\Users\tml\.gtk-2.0\immodules;c:\devel\target\0b150273e7a8329c3935ca90f169d52d\lib\gtk-2.0\2.10.0\i686-pc-mingw32\immodules;c:\devel\target\0b150273e7a8329c3935ca90f169d52d\lib\gtk-2.0\2.10.0\immodules;c:\devel\target\0b150273e7a8329c3935ca90f169d52d\lib\gtk-2.0\i686-pc-mingw32\immodules;c:\devel\target\0b150273e7a8329c3935ca90f169d52d\lib\gtk-2.0\immodules
4
4
  #
@@ -1,5 +1,5 @@
1
1
  # Pango Modules file
2
2
  # Automatically generated file, do not edit
3
3
  #
4
- # ModulesPath = c:/devel/target/9610f18eee106f8364d39d03467cc6de/lib/pango\1.6.0\modules
4
+ # ModulesPath = c:/devel/target/18e9007417f775a5bc83c60917e98632/lib/pango\1.6.0\modules
5
5
  #
@@ -0,0 +1,29 @@
1
+ This is a bundle containing the GTK+ stack and its dependencies
2
+ for Windows. As such it is nothing more than a combination of the
3
+ individual packages it consists of. For a list, see
4
+ share/doc/gtk+-bundle_2.22.0-20101016_win32/components.lst.
5
+
6
+ Both run-time and developer packages are included.
7
+
8
+ This bundle is intended for software developers and packagers. You are
9
+ expected to know what to do with it, more or less.
10
+
11
+ To use it, create some empty folder like c:\opt\gtk . Using either
12
+ Windows Explorer's built-in zip file management, or the command-line
13
+ unzip.exe, available for instance at
14
+ ftp://tug.ctan.org/tex-archive/tools/zip/info-zip/WIN32/unz552xN.exe
15
+ unzip this bundle. Avoid Winzip! It is known to behave oddly.
16
+
17
+ (But you presumably already did extract the files, as you are reading
18
+ this file.)
19
+
20
+ Then add the bin folder to your PATH. Make sure you have no other
21
+ versions of GTK+ in PATH. Run:
22
+ pkg-config --cflags gtk+-2.0
23
+ and verify that it prints out something reasonable. Run:
24
+ gtk-demo
25
+ and verify that it works.
26
+
27
+ To use the MS-Windows theme engine, create a file etc/gtk-2.0/gtkrc
28
+ containing the line:
29
+ gtk-theme-name = "MS-Windows"
@@ -1,5 +1,5 @@
1
1
 
2
- /* Generated data (by glib-mkenums) */
2
+
3
3
 
4
4
  #ifndef __PANGO_ENUM_TYPES_H__
5
5
  #define __PANGO_ENUM_TYPES_H__
@@ -56,5 +56,5 @@ G_END_DECLS
56
56
 
57
57
  #endif /* __PANGO_ENUM_TYPES_H__ */
58
58
 
59
- /* Generated data ends here */
59
+
60
60
 
@@ -4,9 +4,9 @@
4
4
 
5
5
  #define PANGO_VERSION_MAJOR 1
6
6
  #define PANGO_VERSION_MINOR 28
7
- #define PANGO_VERSION_MICRO 1
7
+ #define PANGO_VERSION_MICRO 3
8
8
 
9
- #define PANGO_VERSION_STRING "1.28.1"
9
+ #define PANGO_VERSION_STRING "1.28.3"
10
10
 
11
11
 
12
12
  #endif
@@ -0,0 +1,50 @@
1
+ /*
2
+ * Copyright © 2008 Red Hat, Inc.
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person
5
+ * obtaining a copy of this software and associated documentation
6
+ * files (the "Software"), to deal in the Software without
7
+ * restriction, including without limitation the rights to use, copy,
8
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
9
+ * of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be
13
+ * included in all copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ * SOFTWARE.
23
+ *
24
+ * Author: Carl D. Worth <cworth@cworth.org>
25
+ */
26
+
27
+ #ifndef PIXMAN_VERSION_H__
28
+ #define PIXMAN_VERSION_H__
29
+
30
+ #ifndef PIXMAN_H__
31
+ # error pixman-version.h should only be included by pixman.h
32
+ #endif
33
+
34
+ #define PIXMAN_VERSION_MAJOR 0
35
+ #define PIXMAN_VERSION_MINOR 18
36
+ #define PIXMAN_VERSION_MICRO 4
37
+
38
+ #define PIXMAN_VERSION_STRING "0.18.4"
39
+
40
+ #define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \
41
+ ((major) * 10000) \
42
+ + ((minor) * 100) \
43
+ + ((micro) * 1))
44
+
45
+ #define PIXMAN_VERSION PIXMAN_VERSION_ENCODE( \
46
+ PIXMAN_VERSION_MAJOR, \
47
+ PIXMAN_VERSION_MINOR, \
48
+ PIXMAN_VERSION_MICRO)
49
+
50
+ #endif /* PIXMAN_VERSION_H__ */
@@ -0,0 +1,936 @@
1
+ /***********************************************************
2
+
3
+ Copyright 1987, 1998 The Open Group
4
+
5
+ Permission to use, copy, modify, distribute, and sell this software and its
6
+ documentation for any purpose is hereby granted without fee, provided that
7
+ the above copyright notice appear in all copies and that both that
8
+ copyright notice and this permission notice appear in supporting
9
+ documentation.
10
+
11
+ The above copyright notice and this permission notice shall be included in
12
+ all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+
21
+ Except as contained in this notice, the name of The Open Group shall not be
22
+ used in advertising or otherwise to promote the sale, use or other dealings
23
+ in this Software without prior written authorization from The Open Group.
24
+
25
+ Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
26
+
27
+ All Rights Reserved
28
+
29
+ Permission to use, copy, modify, and distribute this software and its
30
+ documentation for any purpose and without fee is hereby granted,
31
+ provided that the above copyright notice appear in all copies and that
32
+ both that copyright notice and this permission notice appear in
33
+ supporting documentation, and that the name of Digital not be
34
+ used in advertising or publicity pertaining to distribution of the
35
+ software without specific, written prior permission.
36
+
37
+ DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
38
+ ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
39
+ DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
40
+ ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
41
+ WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
42
+ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
43
+ SOFTWARE.
44
+
45
+ ******************************************************************/
46
+ /*
47
+ * Copyright © 1998, 2004 Keith Packard
48
+ * Copyright 2007 Red Hat, Inc.
49
+ *
50
+ * Permission to use, copy, modify, distribute, and sell this software and its
51
+ * documentation for any purpose is hereby granted without fee, provided that
52
+ * the above copyright notice appear in all copies and that both that
53
+ * copyright notice and this permission notice appear in supporting
54
+ * documentation, and that the name of Keith Packard not be used in
55
+ * advertising or publicity pertaining to distribution of the software without
56
+ * specific, written prior permission. Keith Packard makes no
57
+ * representations about the suitability of this software for any purpose. It
58
+ * is provided "as is" without express or implied warranty.
59
+ *
60
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
61
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
62
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
63
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
64
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
65
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
66
+ * PERFORMANCE OF THIS SOFTWARE.
67
+ */
68
+
69
+ #ifndef PIXMAN_H__
70
+ #define PIXMAN_H__
71
+
72
+ #include <pixman-version.h>
73
+
74
+ #ifdef __cplusplus
75
+ #define PIXMAN_BEGIN_DECLS extern "C" {
76
+ #define PIXMAN_END_DECLS }
77
+ #else
78
+ #define PIXMAN_BEGIN_DECLS
79
+ #define PIXMAN_END_DECLS
80
+ #endif
81
+
82
+ PIXMAN_BEGIN_DECLS
83
+
84
+ /*
85
+ * Standard integers
86
+ */
87
+
88
+ #if !defined (PIXMAN_DONT_DEFINE_STDINT)
89
+
90
+ #if defined (_SVR4) || defined (SVR4) || defined (__OpenBSD__) || defined (_sgi) || defined (__sun) || defined (sun) || defined (__digital__) || defined (__HP_cc)
91
+ # include <inttypes.h>
92
+ /* VS 2010 (_MSC_VER 1600) has stdint.h */
93
+ #elif defined (_MSC_VER) && _MSC_VER < 1600
94
+ typedef __int8 int8_t;
95
+ typedef unsigned __int8 uint8_t;
96
+ typedef __int16 int16_t;
97
+ typedef unsigned __int16 uint16_t;
98
+ typedef __int32 int32_t;
99
+ typedef unsigned __int32 uint32_t;
100
+ typedef __int64 int64_t;
101
+ typedef unsigned __int64 uint64_t;
102
+ #elif defined (_AIX)
103
+ # include <sys/inttypes.h>
104
+ #else
105
+ # include <stdint.h>
106
+ #endif
107
+
108
+ #endif
109
+
110
+ /*
111
+ * Boolean
112
+ */
113
+ typedef int pixman_bool_t;
114
+
115
+ /*
116
+ * Fixpoint numbers
117
+ */
118
+ typedef int64_t pixman_fixed_32_32_t;
119
+ typedef pixman_fixed_32_32_t pixman_fixed_48_16_t;
120
+ typedef uint32_t pixman_fixed_1_31_t;
121
+ typedef uint32_t pixman_fixed_1_16_t;
122
+ typedef int32_t pixman_fixed_16_16_t;
123
+ typedef pixman_fixed_16_16_t pixman_fixed_t;
124
+
125
+ #define pixman_fixed_e ((pixman_fixed_t) 1)
126
+ #define pixman_fixed_1 (pixman_int_to_fixed(1))
127
+ #define pixman_fixed_1_minus_e (pixman_fixed_1 - pixman_fixed_e)
128
+ #define pixman_fixed_minus_1 (pixman_int_to_fixed(-1))
129
+ #define pixman_fixed_to_int(f) ((int) ((f) >> 16))
130
+ #define pixman_int_to_fixed(i) ((pixman_fixed_t) ((i) << 16))
131
+ #define pixman_fixed_to_double(f) (double) ((f) / (double) pixman_fixed_1)
132
+ #define pixman_double_to_fixed(d) ((pixman_fixed_t) ((d) * 65536.0))
133
+ #define pixman_fixed_frac(f) ((f) & pixman_fixed_1_minus_e)
134
+ #define pixman_fixed_floor(f) ((f) & ~pixman_fixed_1_minus_e)
135
+ #define pixman_fixed_ceil(f) pixman_fixed_floor ((f) + pixman_fixed_1_minus_e)
136
+ #define pixman_fixed_fraction(f) ((f) & pixman_fixed_1_minus_e)
137
+ #define pixman_fixed_mod_2(f) ((f) & (pixman_fixed1 | pixman_fixed_1_minus_e))
138
+ #define pixman_max_fixed_48_16 ((pixman_fixed_48_16_t) 0x7fffffff)
139
+ #define pixman_min_fixed_48_16 (-((pixman_fixed_48_16_t) 1 << 31))
140
+
141
+ /*
142
+ * Misc structs
143
+ */
144
+ typedef struct pixman_color pixman_color_t;
145
+ typedef struct pixman_point_fixed pixman_point_fixed_t;
146
+ typedef struct pixman_line_fixed pixman_line_fixed_t;
147
+ typedef struct pixman_vector pixman_vector_t;
148
+ typedef struct pixman_transform pixman_transform_t;
149
+
150
+ struct pixman_color
151
+ {
152
+ uint16_t red;
153
+ uint16_t green;
154
+ uint16_t blue;
155
+ uint16_t alpha;
156
+ };
157
+
158
+ struct pixman_point_fixed
159
+ {
160
+ pixman_fixed_t x;
161
+ pixman_fixed_t y;
162
+ };
163
+
164
+ struct pixman_line_fixed
165
+ {
166
+ pixman_point_fixed_t p1, p2;
167
+ };
168
+
169
+ /*
170
+ * Fixed point matrices
171
+ */
172
+
173
+ struct pixman_vector
174
+ {
175
+ pixman_fixed_t vector[3];
176
+ };
177
+
178
+ struct pixman_transform
179
+ {
180
+ pixman_fixed_t matrix[3][3];
181
+ };
182
+
183
+ /* forward declaration (sorry) */
184
+ struct pixman_box16;
185
+ typedef union pixman_image pixman_image_t;
186
+
187
+ void pixman_transform_init_identity (struct pixman_transform *matrix);
188
+ pixman_bool_t pixman_transform_point_3d (const struct pixman_transform *transform,
189
+ struct pixman_vector *vector);
190
+ pixman_bool_t pixman_transform_point (const struct pixman_transform *transform,
191
+ struct pixman_vector *vector);
192
+ pixman_bool_t pixman_transform_multiply (struct pixman_transform *dst,
193
+ const struct pixman_transform *l,
194
+ const struct pixman_transform *r);
195
+ void pixman_transform_init_scale (struct pixman_transform *t,
196
+ pixman_fixed_t sx,
197
+ pixman_fixed_t sy);
198
+ pixman_bool_t pixman_transform_scale (struct pixman_transform *forward,
199
+ struct pixman_transform *reverse,
200
+ pixman_fixed_t sx,
201
+ pixman_fixed_t sy);
202
+ void pixman_transform_init_rotate (struct pixman_transform *t,
203
+ pixman_fixed_t cos,
204
+ pixman_fixed_t sin);
205
+ pixman_bool_t pixman_transform_rotate (struct pixman_transform *forward,
206
+ struct pixman_transform *reverse,
207
+ pixman_fixed_t c,
208
+ pixman_fixed_t s);
209
+ void pixman_transform_init_translate (struct pixman_transform *t,
210
+ pixman_fixed_t tx,
211
+ pixman_fixed_t ty);
212
+ pixman_bool_t pixman_transform_translate (struct pixman_transform *forward,
213
+ struct pixman_transform *reverse,
214
+ pixman_fixed_t tx,
215
+ pixman_fixed_t ty);
216
+ pixman_bool_t pixman_transform_bounds (const struct pixman_transform *matrix,
217
+ struct pixman_box16 *b);
218
+ pixman_bool_t pixman_transform_invert (struct pixman_transform *dst,
219
+ const struct pixman_transform *src);
220
+ pixman_bool_t pixman_transform_is_identity (const struct pixman_transform *t);
221
+ pixman_bool_t pixman_transform_is_scale (const struct pixman_transform *t);
222
+ pixman_bool_t pixman_transform_is_int_translate (const struct pixman_transform *t);
223
+ pixman_bool_t pixman_transform_is_inverse (const struct pixman_transform *a,
224
+ const struct pixman_transform *b);
225
+
226
+ /*
227
+ * Floating point matrices
228
+ */
229
+ struct pixman_f_vector
230
+ {
231
+ double v[3];
232
+ };
233
+
234
+ struct pixman_f_transform
235
+ {
236
+ double m[3][3];
237
+ };
238
+
239
+ pixman_bool_t pixman_transform_from_pixman_f_transform (struct pixman_transform *t,
240
+ const struct pixman_f_transform *ft);
241
+ void pixman_f_transform_from_pixman_transform (struct pixman_f_transform *ft,
242
+ const struct pixman_transform *t);
243
+ pixman_bool_t pixman_f_transform_invert (struct pixman_f_transform *dst,
244
+ const struct pixman_f_transform *src);
245
+ pixman_bool_t pixman_f_transform_point (const struct pixman_f_transform *t,
246
+ struct pixman_f_vector *v);
247
+ void pixman_f_transform_point_3d (const struct pixman_f_transform *t,
248
+ struct pixman_f_vector *v);
249
+ void pixman_f_transform_multiply (struct pixman_f_transform *dst,
250
+ const struct pixman_f_transform *l,
251
+ const struct pixman_f_transform *r);
252
+ void pixman_f_transform_init_scale (struct pixman_f_transform *t,
253
+ double sx,
254
+ double sy);
255
+ pixman_bool_t pixman_f_transform_scale (struct pixman_f_transform *forward,
256
+ struct pixman_f_transform *reverse,
257
+ double sx,
258
+ double sy);
259
+ void pixman_f_transform_init_rotate (struct pixman_f_transform *t,
260
+ double cos,
261
+ double sin);
262
+ pixman_bool_t pixman_f_transform_rotate (struct pixman_f_transform *forward,
263
+ struct pixman_f_transform *reverse,
264
+ double c,
265
+ double s);
266
+ void pixman_f_transform_init_translate (struct pixman_f_transform *t,
267
+ double tx,
268
+ double ty);
269
+ pixman_bool_t pixman_f_transform_translate (struct pixman_f_transform *forward,
270
+ struct pixman_f_transform *reverse,
271
+ double tx,
272
+ double ty);
273
+ pixman_bool_t pixman_f_transform_bounds (const struct pixman_f_transform *t,
274
+ struct pixman_box16 *b);
275
+ void pixman_f_transform_init_identity (struct pixman_f_transform *t);
276
+
277
+ typedef enum
278
+ {
279
+ PIXMAN_REPEAT_NONE,
280
+ PIXMAN_REPEAT_NORMAL,
281
+ PIXMAN_REPEAT_PAD,
282
+ PIXMAN_REPEAT_REFLECT
283
+ } pixman_repeat_t;
284
+
285
+ typedef enum
286
+ {
287
+ PIXMAN_FILTER_FAST,
288
+ PIXMAN_FILTER_GOOD,
289
+ PIXMAN_FILTER_BEST,
290
+ PIXMAN_FILTER_NEAREST,
291
+ PIXMAN_FILTER_BILINEAR,
292
+ PIXMAN_FILTER_CONVOLUTION
293
+ } pixman_filter_t;
294
+
295
+ typedef enum
296
+ {
297
+ PIXMAN_OP_CLEAR = 0x00,
298
+ PIXMAN_OP_SRC = 0x01,
299
+ PIXMAN_OP_DST = 0x02,
300
+ PIXMAN_OP_OVER = 0x03,
301
+ PIXMAN_OP_OVER_REVERSE = 0x04,
302
+ PIXMAN_OP_IN = 0x05,
303
+ PIXMAN_OP_IN_REVERSE = 0x06,
304
+ PIXMAN_OP_OUT = 0x07,
305
+ PIXMAN_OP_OUT_REVERSE = 0x08,
306
+ PIXMAN_OP_ATOP = 0x09,
307
+ PIXMAN_OP_ATOP_REVERSE = 0x0a,
308
+ PIXMAN_OP_XOR = 0x0b,
309
+ PIXMAN_OP_ADD = 0x0c,
310
+ PIXMAN_OP_SATURATE = 0x0d,
311
+
312
+ PIXMAN_OP_DISJOINT_CLEAR = 0x10,
313
+ PIXMAN_OP_DISJOINT_SRC = 0x11,
314
+ PIXMAN_OP_DISJOINT_DST = 0x12,
315
+ PIXMAN_OP_DISJOINT_OVER = 0x13,
316
+ PIXMAN_OP_DISJOINT_OVER_REVERSE = 0x14,
317
+ PIXMAN_OP_DISJOINT_IN = 0x15,
318
+ PIXMAN_OP_DISJOINT_IN_REVERSE = 0x16,
319
+ PIXMAN_OP_DISJOINT_OUT = 0x17,
320
+ PIXMAN_OP_DISJOINT_OUT_REVERSE = 0x18,
321
+ PIXMAN_OP_DISJOINT_ATOP = 0x19,
322
+ PIXMAN_OP_DISJOINT_ATOP_REVERSE = 0x1a,
323
+ PIXMAN_OP_DISJOINT_XOR = 0x1b,
324
+
325
+ PIXMAN_OP_CONJOINT_CLEAR = 0x20,
326
+ PIXMAN_OP_CONJOINT_SRC = 0x21,
327
+ PIXMAN_OP_CONJOINT_DST = 0x22,
328
+ PIXMAN_OP_CONJOINT_OVER = 0x23,
329
+ PIXMAN_OP_CONJOINT_OVER_REVERSE = 0x24,
330
+ PIXMAN_OP_CONJOINT_IN = 0x25,
331
+ PIXMAN_OP_CONJOINT_IN_REVERSE = 0x26,
332
+ PIXMAN_OP_CONJOINT_OUT = 0x27,
333
+ PIXMAN_OP_CONJOINT_OUT_REVERSE = 0x28,
334
+ PIXMAN_OP_CONJOINT_ATOP = 0x29,
335
+ PIXMAN_OP_CONJOINT_ATOP_REVERSE = 0x2a,
336
+ PIXMAN_OP_CONJOINT_XOR = 0x2b,
337
+
338
+ PIXMAN_OP_MULTIPLY = 0x30,
339
+ PIXMAN_OP_SCREEN = 0x31,
340
+ PIXMAN_OP_OVERLAY = 0x32,
341
+ PIXMAN_OP_DARKEN = 0x33,
342
+ PIXMAN_OP_LIGHTEN = 0x34,
343
+ PIXMAN_OP_COLOR_DODGE = 0x35,
344
+ PIXMAN_OP_COLOR_BURN = 0x36,
345
+ PIXMAN_OP_HARD_LIGHT = 0x37,
346
+ PIXMAN_OP_SOFT_LIGHT = 0x38,
347
+ PIXMAN_OP_DIFFERENCE = 0x39,
348
+ PIXMAN_OP_EXCLUSION = 0x3a,
349
+ PIXMAN_OP_HSL_HUE = 0x3b,
350
+ PIXMAN_OP_HSL_SATURATION = 0x3c,
351
+ PIXMAN_OP_HSL_COLOR = 0x3d,
352
+ PIXMAN_OP_HSL_LUMINOSITY = 0x3e
353
+
354
+ #ifdef PIXMAN_USE_INTERNAL_API
355
+ ,
356
+ PIXMAN_N_OPERATORS,
357
+ PIXMAN_OP_NONE = PIXMAN_N_OPERATORS
358
+ #endif
359
+ } pixman_op_t;
360
+
361
+ /*
362
+ * Regions
363
+ */
364
+ typedef struct pixman_region16_data pixman_region16_data_t;
365
+ typedef struct pixman_box16 pixman_box16_t;
366
+ typedef struct pixman_rectangle16 pixman_rectangle16_t;
367
+ typedef struct pixman_region16 pixman_region16_t;
368
+
369
+ struct pixman_region16_data {
370
+ long size;
371
+ long numRects;
372
+ /* pixman_box16_t rects[size]; in memory but not explicitly declared */
373
+ };
374
+
375
+ struct pixman_rectangle16
376
+ {
377
+ int16_t x, y;
378
+ uint16_t width, height;
379
+ };
380
+
381
+ struct pixman_box16
382
+ {
383
+ int16_t x1, y1, x2, y2;
384
+ };
385
+
386
+ struct pixman_region16
387
+ {
388
+ pixman_box16_t extents;
389
+ pixman_region16_data_t *data;
390
+ };
391
+
392
+ typedef enum
393
+ {
394
+ PIXMAN_REGION_OUT,
395
+ PIXMAN_REGION_IN,
396
+ PIXMAN_REGION_PART
397
+ } pixman_region_overlap_t;
398
+
399
+ /* This function exists only to make it possible to preserve
400
+ * the X ABI - it should go away at first opportunity.
401
+ */
402
+ void pixman_region_set_static_pointers (pixman_box16_t *empty_box,
403
+ pixman_region16_data_t *empty_data,
404
+ pixman_region16_data_t *broken_data);
405
+
406
+ /* creation/destruction */
407
+ void pixman_region_init (pixman_region16_t *region);
408
+ void pixman_region_init_rect (pixman_region16_t *region,
409
+ int x,
410
+ int y,
411
+ unsigned int width,
412
+ unsigned int height);
413
+ pixman_bool_t pixman_region_init_rects (pixman_region16_t *region,
414
+ const pixman_box16_t *boxes,
415
+ int count);
416
+ void pixman_region_init_with_extents (pixman_region16_t *region,
417
+ pixman_box16_t *extents);
418
+ void pixman_region_init_from_image (pixman_region16_t *region,
419
+ pixman_image_t *image);
420
+ void pixman_region_fini (pixman_region16_t *region);
421
+
422
+
423
+
424
+ /* manipulation */
425
+ void pixman_region_translate (pixman_region16_t *region,
426
+ int x,
427
+ int y);
428
+ pixman_bool_t pixman_region_copy (pixman_region16_t *dest,
429
+ pixman_region16_t *source);
430
+ pixman_bool_t pixman_region_intersect (pixman_region16_t *new_reg,
431
+ pixman_region16_t *reg1,
432
+ pixman_region16_t *reg2);
433
+ pixman_bool_t pixman_region_union (pixman_region16_t *new_reg,
434
+ pixman_region16_t *reg1,
435
+ pixman_region16_t *reg2);
436
+ pixman_bool_t pixman_region_union_rect (pixman_region16_t *dest,
437
+ pixman_region16_t *source,
438
+ int x,
439
+ int y,
440
+ unsigned int width,
441
+ unsigned int height);
442
+ pixman_bool_t pixman_region_subtract (pixman_region16_t *reg_d,
443
+ pixman_region16_t *reg_m,
444
+ pixman_region16_t *reg_s);
445
+ pixman_bool_t pixman_region_inverse (pixman_region16_t *new_reg,
446
+ pixman_region16_t *reg1,
447
+ pixman_box16_t *inv_rect);
448
+ pixman_bool_t pixman_region_contains_point (pixman_region16_t *region,
449
+ int x,
450
+ int y,
451
+ pixman_box16_t *box);
452
+ pixman_region_overlap_t pixman_region_contains_rectangle (pixman_region16_t *region,
453
+ pixman_box16_t *prect);
454
+ pixman_bool_t pixman_region_not_empty (pixman_region16_t *region);
455
+ pixman_box16_t * pixman_region_extents (pixman_region16_t *region);
456
+ int pixman_region_n_rects (pixman_region16_t *region);
457
+ pixman_box16_t * pixman_region_rectangles (pixman_region16_t *region,
458
+ int *n_rects);
459
+ pixman_bool_t pixman_region_equal (pixman_region16_t *region1,
460
+ pixman_region16_t *region2);
461
+ pixman_bool_t pixman_region_selfcheck (pixman_region16_t *region);
462
+ void pixman_region_reset (pixman_region16_t *region,
463
+ pixman_box16_t *box);
464
+ /*
465
+ * 32 bit regions
466
+ */
467
+ typedef struct pixman_region32_data pixman_region32_data_t;
468
+ typedef struct pixman_box32 pixman_box32_t;
469
+ typedef struct pixman_rectangle32 pixman_rectangle32_t;
470
+ typedef struct pixman_region32 pixman_region32_t;
471
+
472
+ struct pixman_region32_data {
473
+ long size;
474
+ long numRects;
475
+ /* pixman_box32_t rects[size]; in memory but not explicitly declared */
476
+ };
477
+
478
+ struct pixman_rectangle32
479
+ {
480
+ int32_t x, y;
481
+ uint32_t width, height;
482
+ };
483
+
484
+ struct pixman_box32
485
+ {
486
+ int32_t x1, y1, x2, y2;
487
+ };
488
+
489
+ struct pixman_region32
490
+ {
491
+ pixman_box32_t extents;
492
+ pixman_region32_data_t *data;
493
+ };
494
+
495
+ /* creation/destruction */
496
+ void pixman_region32_init (pixman_region32_t *region);
497
+ void pixman_region32_init_rect (pixman_region32_t *region,
498
+ int x,
499
+ int y,
500
+ unsigned int width,
501
+ unsigned int height);
502
+ pixman_bool_t pixman_region32_init_rects (pixman_region32_t *region,
503
+ const pixman_box32_t *boxes,
504
+ int count);
505
+ void pixman_region32_init_with_extents (pixman_region32_t *region,
506
+ pixman_box32_t *extents);
507
+ void pixman_region32_init_from_image (pixman_region32_t *region,
508
+ pixman_image_t *image);
509
+ void pixman_region32_fini (pixman_region32_t *region);
510
+
511
+
512
+ /* manipulation */
513
+ void pixman_region32_translate (pixman_region32_t *region,
514
+ int x,
515
+ int y);
516
+ pixman_bool_t pixman_region32_copy (pixman_region32_t *dest,
517
+ pixman_region32_t *source);
518
+ pixman_bool_t pixman_region32_intersect (pixman_region32_t *new_reg,
519
+ pixman_region32_t *reg1,
520
+ pixman_region32_t *reg2);
521
+ pixman_bool_t pixman_region32_union (pixman_region32_t *new_reg,
522
+ pixman_region32_t *reg1,
523
+ pixman_region32_t *reg2);
524
+ pixman_bool_t pixman_region32_union_rect (pixman_region32_t *dest,
525
+ pixman_region32_t *source,
526
+ int x,
527
+ int y,
528
+ unsigned int width,
529
+ unsigned int height);
530
+ pixman_bool_t pixman_region32_subtract (pixman_region32_t *reg_d,
531
+ pixman_region32_t *reg_m,
532
+ pixman_region32_t *reg_s);
533
+ pixman_bool_t pixman_region32_inverse (pixman_region32_t *new_reg,
534
+ pixman_region32_t *reg1,
535
+ pixman_box32_t *inv_rect);
536
+ pixman_bool_t pixman_region32_contains_point (pixman_region32_t *region,
537
+ int x,
538
+ int y,
539
+ pixman_box32_t *box);
540
+ pixman_region_overlap_t pixman_region32_contains_rectangle (pixman_region32_t *region,
541
+ pixman_box32_t *prect);
542
+ pixman_bool_t pixman_region32_not_empty (pixman_region32_t *region);
543
+ pixman_box32_t * pixman_region32_extents (pixman_region32_t *region);
544
+ int pixman_region32_n_rects (pixman_region32_t *region);
545
+ pixman_box32_t * pixman_region32_rectangles (pixman_region32_t *region,
546
+ int *n_rects);
547
+ pixman_bool_t pixman_region32_equal (pixman_region32_t *region1,
548
+ pixman_region32_t *region2);
549
+ pixman_bool_t pixman_region32_selfcheck (pixman_region32_t *region);
550
+ void pixman_region32_reset (pixman_region32_t *region,
551
+ pixman_box32_t *box);
552
+
553
+
554
+ /* Copy / Fill / Misc */
555
+ pixman_bool_t pixman_blt (uint32_t *src_bits,
556
+ uint32_t *dst_bits,
557
+ int src_stride,
558
+ int dst_stride,
559
+ int src_bpp,
560
+ int dst_bpp,
561
+ int src_x,
562
+ int src_y,
563
+ int dst_x,
564
+ int dst_y,
565
+ int width,
566
+ int height);
567
+ pixman_bool_t pixman_fill (uint32_t *bits,
568
+ int stride,
569
+ int bpp,
570
+ int x,
571
+ int y,
572
+ int width,
573
+ int height,
574
+ uint32_t _xor);
575
+
576
+ int pixman_version (void);
577
+ const char* pixman_version_string (void);
578
+
579
+ /*
580
+ * Images
581
+ */
582
+ typedef struct pixman_indexed pixman_indexed_t;
583
+ typedef struct pixman_gradient_stop pixman_gradient_stop_t;
584
+
585
+ typedef uint32_t (* pixman_read_memory_func_t) (const void *src, int size);
586
+ typedef void (* pixman_write_memory_func_t) (void *dst, uint32_t value, int size);
587
+
588
+ typedef void (* pixman_image_destroy_func_t) (pixman_image_t *image, void *data);
589
+
590
+ struct pixman_gradient_stop {
591
+ pixman_fixed_t x;
592
+ pixman_color_t color;
593
+ };
594
+
595
+ #define PIXMAN_MAX_INDEXED 256 /* XXX depth must be <= 8 */
596
+
597
+ #if PIXMAN_MAX_INDEXED <= 256
598
+ typedef uint8_t pixman_index_type;
599
+ #endif
600
+
601
+ struct pixman_indexed
602
+ {
603
+ pixman_bool_t color;
604
+ uint32_t rgba[PIXMAN_MAX_INDEXED];
605
+ pixman_index_type ent[32768];
606
+ };
607
+
608
+ /*
609
+ * While the protocol is generous in format support, the
610
+ * sample implementation allows only packed RGB and GBR
611
+ * representations for data to simplify software rendering,
612
+ */
613
+ #define PIXMAN_FORMAT(bpp,type,a,r,g,b) (((bpp) << 24) | \
614
+ ((type) << 16) | \
615
+ ((a) << 12) | \
616
+ ((r) << 8) | \
617
+ ((g) << 4) | \
618
+ ((b)))
619
+
620
+ #define PIXMAN_FORMAT_BPP(f) (((f) >> 24) )
621
+ #define PIXMAN_FORMAT_TYPE(f) (((f) >> 16) & 0xff)
622
+ #define PIXMAN_FORMAT_A(f) (((f) >> 12) & 0x0f)
623
+ #define PIXMAN_FORMAT_R(f) (((f) >> 8) & 0x0f)
624
+ #define PIXMAN_FORMAT_G(f) (((f) >> 4) & 0x0f)
625
+ #define PIXMAN_FORMAT_B(f) (((f) ) & 0x0f)
626
+ #define PIXMAN_FORMAT_RGB(f) (((f) ) & 0xfff)
627
+ #define PIXMAN_FORMAT_VIS(f) (((f) ) & 0xffff)
628
+ #define PIXMAN_FORMAT_DEPTH(f) (PIXMAN_FORMAT_A(f) + \
629
+ PIXMAN_FORMAT_R(f) + \
630
+ PIXMAN_FORMAT_G(f) + \
631
+ PIXMAN_FORMAT_B(f))
632
+
633
+ #define PIXMAN_TYPE_OTHER 0
634
+ #define PIXMAN_TYPE_A 1
635
+ #define PIXMAN_TYPE_ARGB 2
636
+ #define PIXMAN_TYPE_ABGR 3
637
+ #define PIXMAN_TYPE_COLOR 4
638
+ #define PIXMAN_TYPE_GRAY 5
639
+ #define PIXMAN_TYPE_YUY2 6
640
+ #define PIXMAN_TYPE_YV12 7
641
+ #define PIXMAN_TYPE_BGRA 8
642
+
643
+ #define PIXMAN_FORMAT_COLOR(f) \
644
+ (PIXMAN_FORMAT_TYPE(f) == PIXMAN_TYPE_ARGB || \
645
+ PIXMAN_FORMAT_TYPE(f) == PIXMAN_TYPE_ABGR || \
646
+ PIXMAN_FORMAT_TYPE(f) == PIXMAN_TYPE_BGRA)
647
+
648
+ /* 32bpp formats */
649
+ typedef enum {
650
+ PIXMAN_a8r8g8b8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,8,8,8,8),
651
+ PIXMAN_x8r8g8b8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,0,8,8,8),
652
+ PIXMAN_a8b8g8r8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,8,8,8,8),
653
+ PIXMAN_x8b8g8r8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,0,8,8,8),
654
+ PIXMAN_b8g8r8a8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_BGRA,8,8,8,8),
655
+ PIXMAN_b8g8r8x8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_BGRA,0,8,8,8),
656
+ PIXMAN_x2r10g10b10 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,0,10,10,10),
657
+ PIXMAN_a2r10g10b10 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,2,10,10,10),
658
+ PIXMAN_x2b10g10r10 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,0,10,10,10),
659
+ PIXMAN_a2b10g10r10 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,2,10,10,10),
660
+
661
+ /* 24bpp formats */
662
+ PIXMAN_r8g8b8 = PIXMAN_FORMAT(24,PIXMAN_TYPE_ARGB,0,8,8,8),
663
+ PIXMAN_b8g8r8 = PIXMAN_FORMAT(24,PIXMAN_TYPE_ABGR,0,8,8,8),
664
+
665
+ /* 16bpp formats */
666
+ PIXMAN_r5g6b5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,5,6,5),
667
+ PIXMAN_b5g6r5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,5,6,5),
668
+
669
+ PIXMAN_a1r5g5b5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,1,5,5,5),
670
+ PIXMAN_x1r5g5b5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,5,5,5),
671
+ PIXMAN_a1b5g5r5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,1,5,5,5),
672
+ PIXMAN_x1b5g5r5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,5,5,5),
673
+ PIXMAN_a4r4g4b4 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,4,4,4,4),
674
+ PIXMAN_x4r4g4b4 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,4,4,4),
675
+ PIXMAN_a4b4g4r4 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,4,4,4,4),
676
+ PIXMAN_x4b4g4r4 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,4,4,4),
677
+
678
+ /* 8bpp formats */
679
+ PIXMAN_a8 = PIXMAN_FORMAT(8,PIXMAN_TYPE_A,8,0,0,0),
680
+ PIXMAN_r3g3b2 = PIXMAN_FORMAT(8,PIXMAN_TYPE_ARGB,0,3,3,2),
681
+ PIXMAN_b2g3r3 = PIXMAN_FORMAT(8,PIXMAN_TYPE_ABGR,0,3,3,2),
682
+ PIXMAN_a2r2g2b2 = PIXMAN_FORMAT(8,PIXMAN_TYPE_ARGB,2,2,2,2),
683
+ PIXMAN_a2b2g2r2 = PIXMAN_FORMAT(8,PIXMAN_TYPE_ABGR,2,2,2,2),
684
+
685
+ PIXMAN_c8 = PIXMAN_FORMAT(8,PIXMAN_TYPE_COLOR,0,0,0,0),
686
+ PIXMAN_g8 = PIXMAN_FORMAT(8,PIXMAN_TYPE_GRAY,0,0,0,0),
687
+
688
+ PIXMAN_x4a4 = PIXMAN_FORMAT(8,PIXMAN_TYPE_A,4,0,0,0),
689
+
690
+ PIXMAN_x4c4 = PIXMAN_FORMAT(8,PIXMAN_TYPE_COLOR,0,0,0,0),
691
+ PIXMAN_x4g4 = PIXMAN_FORMAT(8,PIXMAN_TYPE_GRAY,0,0,0,0),
692
+
693
+ /* 4bpp formats */
694
+ PIXMAN_a4 = PIXMAN_FORMAT(4,PIXMAN_TYPE_A,4,0,0,0),
695
+ PIXMAN_r1g2b1 = PIXMAN_FORMAT(4,PIXMAN_TYPE_ARGB,0,1,2,1),
696
+ PIXMAN_b1g2r1 = PIXMAN_FORMAT(4,PIXMAN_TYPE_ABGR,0,1,2,1),
697
+ PIXMAN_a1r1g1b1 = PIXMAN_FORMAT(4,PIXMAN_TYPE_ARGB,1,1,1,1),
698
+ PIXMAN_a1b1g1r1 = PIXMAN_FORMAT(4,PIXMAN_TYPE_ABGR,1,1,1,1),
699
+
700
+ PIXMAN_c4 = PIXMAN_FORMAT(4,PIXMAN_TYPE_COLOR,0,0,0,0),
701
+ PIXMAN_g4 = PIXMAN_FORMAT(4,PIXMAN_TYPE_GRAY,0,0,0,0),
702
+
703
+ /* 1bpp formats */
704
+ PIXMAN_a1 = PIXMAN_FORMAT(1,PIXMAN_TYPE_A,1,0,0,0),
705
+
706
+ PIXMAN_g1 = PIXMAN_FORMAT(1,PIXMAN_TYPE_GRAY,0,0,0,0),
707
+
708
+ /* YUV formats */
709
+ PIXMAN_yuy2 = PIXMAN_FORMAT(16,PIXMAN_TYPE_YUY2,0,0,0,0),
710
+ PIXMAN_yv12 = PIXMAN_FORMAT(12,PIXMAN_TYPE_YV12,0,0,0,0)
711
+ } pixman_format_code_t;
712
+
713
+ /* Querying supported format values. */
714
+ pixman_bool_t pixman_format_supported_destination (pixman_format_code_t format);
715
+ pixman_bool_t pixman_format_supported_source (pixman_format_code_t format);
716
+
717
+ /* Constructors */
718
+ pixman_image_t *pixman_image_create_solid_fill (pixman_color_t *color);
719
+ pixman_image_t *pixman_image_create_linear_gradient (pixman_point_fixed_t *p1,
720
+ pixman_point_fixed_t *p2,
721
+ const pixman_gradient_stop_t *stops,
722
+ int n_stops);
723
+ pixman_image_t *pixman_image_create_radial_gradient (pixman_point_fixed_t *inner,
724
+ pixman_point_fixed_t *outer,
725
+ pixman_fixed_t inner_radius,
726
+ pixman_fixed_t outer_radius,
727
+ const pixman_gradient_stop_t *stops,
728
+ int n_stops);
729
+ pixman_image_t *pixman_image_create_conical_gradient (pixman_point_fixed_t *center,
730
+ pixman_fixed_t angle,
731
+ const pixman_gradient_stop_t *stops,
732
+ int n_stops);
733
+ pixman_image_t *pixman_image_create_bits (pixman_format_code_t format,
734
+ int width,
735
+ int height,
736
+ uint32_t *bits,
737
+ int rowstride_bytes);
738
+
739
+ /* Destructor */
740
+ pixman_image_t *pixman_image_ref (pixman_image_t *image);
741
+ pixman_bool_t pixman_image_unref (pixman_image_t *image);
742
+
743
+ void pixman_image_set_destroy_function (pixman_image_t *image,
744
+ pixman_image_destroy_func_t function,
745
+ void *data);
746
+ void * pixman_image_get_destroy_data (pixman_image_t *image);
747
+
748
+ /* Set properties */
749
+ pixman_bool_t pixman_image_set_clip_region (pixman_image_t *image,
750
+ pixman_region16_t *region);
751
+ pixman_bool_t pixman_image_set_clip_region32 (pixman_image_t *image,
752
+ pixman_region32_t *region);
753
+ void pixman_image_set_has_client_clip (pixman_image_t *image,
754
+ pixman_bool_t clien_clip);
755
+ pixman_bool_t pixman_image_set_transform (pixman_image_t *image,
756
+ const pixman_transform_t *transform);
757
+ void pixman_image_set_repeat (pixman_image_t *image,
758
+ pixman_repeat_t repeat);
759
+ pixman_bool_t pixman_image_set_filter (pixman_image_t *image,
760
+ pixman_filter_t filter,
761
+ const pixman_fixed_t *filter_params,
762
+ int n_filter_params);
763
+ void pixman_image_set_source_clipping (pixman_image_t *image,
764
+ pixman_bool_t source_clipping);
765
+ void pixman_image_set_alpha_map (pixman_image_t *image,
766
+ pixman_image_t *alpha_map,
767
+ int16_t x,
768
+ int16_t y);
769
+ void pixman_image_set_component_alpha (pixman_image_t *image,
770
+ pixman_bool_t component_alpha);
771
+ void pixman_image_set_accessors (pixman_image_t *image,
772
+ pixman_read_memory_func_t read_func,
773
+ pixman_write_memory_func_t write_func);
774
+ void pixman_image_set_indexed (pixman_image_t *image,
775
+ const pixman_indexed_t *indexed);
776
+ uint32_t *pixman_image_get_data (pixman_image_t *image);
777
+ int pixman_image_get_width (pixman_image_t *image);
778
+ int pixman_image_get_height (pixman_image_t *image);
779
+ int pixman_image_get_stride (pixman_image_t *image); /* in bytes */
780
+ int pixman_image_get_depth (pixman_image_t *image);
781
+ pixman_bool_t pixman_image_fill_rectangles (pixman_op_t op,
782
+ pixman_image_t *image,
783
+ pixman_color_t *color,
784
+ int n_rects,
785
+ const pixman_rectangle16_t *rects);
786
+ pixman_bool_t pixman_image_fill_boxes (pixman_op_t op,
787
+ pixman_image_t *dest,
788
+ pixman_color_t *color,
789
+ int n_boxes,
790
+ const pixman_box32_t *boxes);
791
+
792
+ /* Composite */
793
+ pixman_bool_t pixman_compute_composite_region (pixman_region16_t *region,
794
+ pixman_image_t *src_image,
795
+ pixman_image_t *mask_image,
796
+ pixman_image_t *dst_image,
797
+ int16_t src_x,
798
+ int16_t src_y,
799
+ int16_t mask_x,
800
+ int16_t mask_y,
801
+ int16_t dest_x,
802
+ int16_t dest_y,
803
+ uint16_t width,
804
+ uint16_t height);
805
+ void pixman_image_composite (pixman_op_t op,
806
+ pixman_image_t *src,
807
+ pixman_image_t *mask,
808
+ pixman_image_t *dest,
809
+ int16_t src_x,
810
+ int16_t src_y,
811
+ int16_t mask_x,
812
+ int16_t mask_y,
813
+ int16_t dest_x,
814
+ int16_t dest_y,
815
+ uint16_t width,
816
+ uint16_t height);
817
+ void pixman_image_composite32 (pixman_op_t op,
818
+ pixman_image_t *src,
819
+ pixman_image_t *mask,
820
+ pixman_image_t *dest,
821
+ int32_t src_x,
822
+ int32_t src_y,
823
+ int32_t mask_x,
824
+ int32_t mask_y,
825
+ int32_t dest_x,
826
+ int32_t dest_y,
827
+ int32_t width,
828
+ int32_t height);
829
+
830
+ /* Old X servers rely on out-of-bounds accesses when they are asked
831
+ * to composite with a window as the source. They create a pixman image
832
+ * pointing to some bogus position in memory, but then they set a clip
833
+ * region to the position where the actual bits are.
834
+ *
835
+ * Due to a bug in old versions of pixman, where it would not clip
836
+ * against the image bounds when a clip region was set, this would
837
+ * actually work. So by default we allow certain out-of-bound access
838
+ * to happen unless explicitly disabled.
839
+ *
840
+ * Fixed X servers should call this function to disable the workaround.
841
+ */
842
+ void pixman_disable_out_of_bounds_workaround (void);
843
+
844
+ /*
845
+ * Trapezoids
846
+ */
847
+ typedef struct pixman_edge pixman_edge_t;
848
+ typedef struct pixman_trapezoid pixman_trapezoid_t;
849
+ typedef struct pixman_trap pixman_trap_t;
850
+ typedef struct pixman_span_fix pixman_span_fix_t;
851
+
852
+ /*
853
+ * An edge structure. This represents a single polygon edge
854
+ * and can be quickly stepped across small or large gaps in the
855
+ * sample grid
856
+ */
857
+ struct pixman_edge
858
+ {
859
+ pixman_fixed_t x;
860
+ pixman_fixed_t e;
861
+ pixman_fixed_t stepx;
862
+ pixman_fixed_t signdx;
863
+ pixman_fixed_t dy;
864
+ pixman_fixed_t dx;
865
+
866
+ pixman_fixed_t stepx_small;
867
+ pixman_fixed_t stepx_big;
868
+ pixman_fixed_t dx_small;
869
+ pixman_fixed_t dx_big;
870
+ };
871
+
872
+ struct pixman_trapezoid
873
+ {
874
+ pixman_fixed_t top, bottom;
875
+ pixman_line_fixed_t left, right;
876
+ };
877
+
878
+
879
+ /* whether 't' is a well defined not obviously empty trapezoid */
880
+ #define pixman_trapezoid_valid(t) \
881
+ ((t)->left.p1.y != (t)->left.p2.y && \
882
+ (t)->right.p1.y != (t)->right.p2.y && \
883
+ (int) ((t)->bottom - (t)->top) > 0)
884
+
885
+ struct pixman_span_fix
886
+ {
887
+ pixman_fixed_t l, r, y;
888
+ };
889
+
890
+ struct pixman_trap
891
+ {
892
+ pixman_span_fix_t top, bot;
893
+ };
894
+
895
+ pixman_fixed_t pixman_sample_ceil_y (pixman_fixed_t y,
896
+ int bpp);
897
+ pixman_fixed_t pixman_sample_floor_y (pixman_fixed_t y,
898
+ int bpp);
899
+ void pixman_edge_step (pixman_edge_t *e,
900
+ int n);
901
+ void pixman_edge_init (pixman_edge_t *e,
902
+ int bpp,
903
+ pixman_fixed_t y_start,
904
+ pixman_fixed_t x_top,
905
+ pixman_fixed_t y_top,
906
+ pixman_fixed_t x_bot,
907
+ pixman_fixed_t y_bot);
908
+ void pixman_line_fixed_edge_init (pixman_edge_t *e,
909
+ int bpp,
910
+ pixman_fixed_t y,
911
+ const pixman_line_fixed_t *line,
912
+ int x_off,
913
+ int y_off);
914
+ void pixman_rasterize_edges (pixman_image_t *image,
915
+ pixman_edge_t *l,
916
+ pixman_edge_t *r,
917
+ pixman_fixed_t t,
918
+ pixman_fixed_t b);
919
+ void pixman_add_traps (pixman_image_t *image,
920
+ int16_t x_off,
921
+ int16_t y_off,
922
+ int ntrap,
923
+ pixman_trap_t *traps);
924
+ void pixman_add_trapezoids (pixman_image_t *image,
925
+ int16_t x_off,
926
+ int y_off,
927
+ int ntraps,
928
+ const pixman_trapezoid_t *traps);
929
+ void pixman_rasterize_trapezoid (pixman_image_t *image,
930
+ const pixman_trapezoid_t *trap,
931
+ int x_off,
932
+ int y_off);
933
+
934
+ PIXMAN_END_DECLS
935
+
936
+ #endif /* PIXMAN_H__ */