4 Gfxprim is simple modular 2D bitmap graphics library with emphasis on speed
7 One of the key points of the library is meta-programming. Most of the
8 operations and filters are wriiten in http://jinja.pocoo.org/[Jinja]
9 templating language that is used to generate specialized code in C
10 programmming language. Creating code that works with less usuall pixel types
11 should be as easy as adding pixel definition into the configuration and
12 rebuilding the library. Read more link:gen.html[here].
17 Core of the library contains minimal amount of code to define interface that
18 is shared between all parts of the library.
20 The most important part of the core is link:context.html[CP_Context] structure
21 that represents in-memory pixmap.
23 The Core also contains generated code for basic operations such as
24 link:get_put_pixel.html[GetPixel] and link:get_put_pixel.html[PutPixel] and
25 optimized code for writing continous line of pixels 'GP_WritePixels' that are
26 base for the more complex drawing primitives in GFX or for graphics operations
29 link:blits.html[Blits] are functions used to copy part of one bitmap into
30 another bitmap. The blits be also used for primitive bitmap pixel type
31 conversions (i.e. RGB888 vs BGR888).
33 link:progress_callback.html[Progress Callback] is an interface that allows you
34 to monitor progress of an operation it is mainly used in loaders and filters.
35 Generally any operation that is not really quick takes optional pointer to
36 progress callback that allows your program to monitor and possibly abort the
39 link:debug.html[Debug] interface is used as unified facility to print debug
40 messages, control debug level, etc.
42 There is also support for link:gamma.html[Gamma] correction. Unfortunatelly
43 not all parts of library use it at the moment.
45 And last but not least Core is a home for some link:core.html[common macros]
46 that are used from different parts of the library.
51 link:drawing_api.html[Gfx] is part of the library that implements basic
52 graphics primitives such as lines, circles, polygons, etc. Clasicall
53 primitives are nearly finished. Work on anti aliased primitives has been
59 link:text_api.html[Text] part of the library implements basic support for
60 printing text into the bitmap. There are two bitmap fonts compiled directly
61 into the library and we support True Type fonts through
62 link:http://freetype.org[FreeType] (so far ASCII printable characters only).
67 link:loaders.html[Loaders] are part that is resposible for loading and saving
68 images into various standard formats (PNG, JPEG, GIF, BMP, PNM, etc...).
70 .Currently supported formats
71 [width="100%",options="header"]
72 |=============================================================================
73 | Extension | Format Name | Signature | Read Support | Write Support
75 | JPEG | | [green]*Yes* | [green]*Yes* | [green]*Yes*
78 Portable Network Graphics |
80 [green]#16 Bit RGB not supported# |
81 [green]#16 Bit RGB not supported#
84 Graphics Interchange Format |
91 [green]#RLE and RGB Bitfields not implemented# |
95 Paint Shop Pro Image |
97 [green]#Composite image only for newer formats than 3.0# |
101 Netpbm portable bitmap |
103 [gray]#Not finished# |
106 |=============================================================================
112 link:filters.html[Filters] are part of the library that implements bitmap
115 .Currently Implemented Point Filters
116 [width="100%",options="header"]
117 |=============================================================================
118 | Filter Name | Supported Pixel Type | Multithreaded
119 | Brightness | All | No
120 | Contrast | All | No
121 |=============================================================================
123 .Currently Implemented Linear Filters
124 [width="100%",options="header"]
125 |=============================================================================
126 | Filter Name | Supported Pixel Type | Mutithreaded
127 | Convolution | RGB888 | Yes
128 | Separable Convolution | RGB888 | Yes
129 | Gaussian Blur | RGB888 | Yes
130 | Sobel Edge Detection | RGB888 | Yes
131 | Prewitt Edge Detection | RGB888 | Yes
132 |=============================================================================
134 NOTE: Linear filters are implemented using generic convolution filters, once
135 convolution is rewritten to run for all pixel types the rest of filters
136 will support them automatically.
139 .Currently Implemented Linear Filters
140 [width="100%",options="header"]
141 |=============================================================================
142 | Filter Name | Supported Pixel Type | Multithreaded
143 | Addition | All | No
144 | Multiplication | All | No
145 | Difference | All | No
146 | Max, Min | All | No
147 |=============================================================================
149 .Currently Implemented Ditherings
150 [width="100%",options="header"]
151 |=============================================================================
152 | Filter Name | Supported Pixel Type | Multithreaded
153 | Floyd Steinberg | RGB888 -> Any | No
154 | Hilbert Peano | RGB888 -> Any | No
155 |=============================================================================
157 .Currently Implemented Resamplings
158 [width="100%",options="header"]
159 |=============================================================================
160 | Filter Name | Supported Pixel Type | Multithreaded
161 | Nearest Neighbour | All | No
162 | Bilinear (Integer Arithmetics) | RGB888 | No
163 | Bicubic (Integer Arithmetics) | All | No
164 | Bicubic (Float Arithmetics) | RGB888 | No
165 |=============================================================================
167 .Rotation and mirroring
168 [width="100%",options="header"]
169 |=============================================================================
170 | Filter Name | Supported Pixel Type | Multithreaded
171 | Rotate 90 | All | No
172 | Rotate 180 | All | No
173 | Rotate 270 | All | No
174 | Mirror Vertically | All | No
175 | Mirror Horizontally | All | No
176 |=============================================================================
179 [width="100%",options="header"]
180 |=============================================================================
181 | Filter Name | Supported Pixel Type | Multithreaded
182 | Histogram | All | No
183 | Additive Gaussian Noise | All | No
184 | Median | RGB888 | No
185 | Weighted Median | RGB888 | No
186 | Sigma Lee | RGB888 | No
187 |=============================================================================
192 link:backends.html[Backends] together with link:input.html[Input] are API for
193 drawing on screen (or into a window) and for getting keystrokes/mouse
194 coordinates. So far we support X11, linux framebuffer and SDL as a graphics
203 * Anti Aliased drawing
205 * Gamma correction and color profiles