mingw10.dll 의존성 제거하기

옵션으로 -mthreads를 주게 되면 dependency가 발생한다.
-mthreads옵션은 __gthread_key_create가 필요한 경우에만 의미가 있다.

The gcc manual says

Support thread-safe exception handling on Mingw32. Code that relies on thread-safe exception handling must compile and link all code with the -mthreads option. When compiling,
-mthreads defines -D_MT; when linking, it links in a special thread helper library -lmingwthrd which cleans up per thread exception handling data.

MAX* define

본래 math.h에 있어야 하는데.. MinGW에는 없다. 필요하면 추가한다.

#define MAXSHORT    0x7fff
#define MAXINT      0x7fffffff
#define MAXLONG     0x7fffffff
#define MAXDOUBLE   1.7976931348623158E+308
#define MAXFLOAT    3.40282347E+38F
#define MINDOUBLE   2.2250738585072014E-308
#define MINFLOAT    1.17549435E-38F
#define MAXLDOUBLE  1.1897314953572317649E+4932L
#define MINLDOUBLE  3.362103143112094E-4917L


홈페이지: http://www.freedesktop.org/wiki/Software/glitz

glitz 라이브러리를 이용하면 opengl 하드웨어 가속 그래픽을 지원하여, 현대적인 3D 디스플레이 하드웨어의 능력을 이용할 수 있다.
cairo에서 glitz 백 엔드를 지원하므로, 더욱 빠른 처리를 할 수 있다.

Glitz is a software library for 2D graphics which provides hardware acceleration using OpenGL, an API for 3D graphics.

다운로드: 0.5.6


홈페이지: http://expat.sourceforge.net/

xml 파서 라이브러리.

Expat is an XML parser library written in C

int main()
  char buf[convenient size];
  int len;   /* len is the number of bytes in the current bufferful of data */
  int done;
  int depth = 0;  /* nothing magic about this; the sample program tracks depth to know how far to indent. */
                  /* depth is thus going to be the user data for this parser. */

  XML_Parser parser = XML_ParserCreate(NULL);
  XML_SetUserData(parser, &depth);
  XML_SetElementHandler(parser, startElement, endElement);
  do {
    get a piece of input into the buffer
    done = whether this bufferful is the last bufferful
    if (!XML_Parse(parser, buf, len, done)) {
      handle parse error
      return 1;
  } while (!done);
  return 0;

다운로드: 2.01

GTK+ 2.x 테마/엔진 정리


아래의 링크들은 GTK+ 2.x 에서 사용가능한 테마와 그의 엔진들이다. MinGW 에서 컴파일후 GTK+ 2.x for Win32 에서 사용가능하다. 조만간 컴파일한 엔진들을 어디다 올려놔야겠다.


Murrine GTK+ Cairo Engine











홈페이지: http://www.clutter-project.org/sources/clutter-gtk/

Clutter-GTK – GTK+ Integration library for Clutter

Clutter-GTK is a library providing facilities to integrate Clutter into GTK+
applications. It provides a GTK+ widget, GtkClutterEmbed, for embedding the
default ClutterStage into any GtkContainer.


Clutter >= 0.8.7 (X11 backend) or >= 0.8.7 (Win32 backend)
GTK+ >= 2.12

Copyright (C) 2006 OpenedHand
Released under the terms of the GNU Lesser General Public License, version 2.1
or later. See the file COPYING for details.

아래는 테스트 화면.

다운로드: 0.8.3, 0.10.2


홈페이지: ftp://ftp.gimp.org/pub/babl/

babl is a dynamic, any to any, pixel format translation library.
It allows converting between different methods of storing pixels known as pixel formats that have with different bitdepths and other data representations, color models and component permutations.

A vocabulary to formulate new pixel formats from existing primitives is provided as well as the framework to add new color models and data types.

– Fast.
– Accurate.
– Stable, small API.
– Self profiling and optimizing.
– ANSI C, works on win32, linux and mac, 32bit and 64bit systems.
– Extendable with new formats, color models, components and datatypes.
– Reference 64bit floating point conversions for datatypes and color models.

GEGL through GeglBuffer provides tiled buffers with on disk storage as well as linear buffers with accessor functions for efficient data access transparently using babl fishes for translation to the desired pixel formats.

다운로드: 0.1.0


홈페이지: www.gegl.org

GEGL (일반 그래픽 라이브러리) 는 이미지 처리 프로그램을 위한 라이브러리로 GIMP에 사용중이다.

GEGL (Generic Graphics Library) is a graph based image processing framework.

GEGL provides infrastructure to do demand based cached non destructive image editing on larger than RAM buffers. Through babl it provides support for a wide range of color models and pixel storage formats for input and output.


- Floating point handling and processing and output of larger 8bit, 16bit integer and 32bit floating point per component buffers larger than RAM.
- C, vala, C#, Python and Ruby interfaces using a consistent DOM like graph API to manage processing graphs.
- Processing
   - Iterative chunk-wise processing.
   - Processes subregions and dependencies.
   - Subgraph caches to aid performance of non-destructive editing.
- GeglBuffer
   - Storage of all babl supported formats.
   - Tiled sparse buffers (larger than RAM images).
   - linear buffers (allocated internally or from external allocation.)
   - On demand tiled mipmapping.
   - inter process shared storage
- Operations
   - PNG, JPEG, SVG, EXR, RAW, ffmpeg, v4l and other image sources.
   - Pattern renderers
   - Arithmetic operations
   - link_operations.html#porter_duff[porter duff compositing]
   - SVG filter modes and full set of compositing ops from SVG-1.2 draft.
   - Gaussian blur, bilateral-filter, symmetric nearest neighbour, unsharp mask.
   - Color correction.
   - Text rendering using cairo and pango.
   - Most operations operate in scRGB (using 32bit linear light RGBA)
- Bounding box based hit detection.
- XML serialization format (not-finalized)

다운로드: 0.1.0