Gfxprim
Threads by month
- ----- 2026 -----
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
December 2012
- 3 participants
- 79 discussions
[repo.or.cz] gfxprim.git branch master updated: e33c83da1ded26f2e05184e4847c197d05ec146b
by metan 12 Dec '12
by metan 12 Dec '12
12 Dec '12
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project gfxprim.git.
The branch, master has been updated
via e33c83da1ded26f2e05184e4847c197d05ec146b (commit)
from e77a976b35f4bec8d5d2f95de598e4944870bf8b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://repo.or.cz/w/gfxprim.git/commit/e33c83da1ded26f2e05184e4847c197d05ec…
commit e33c83da1ded26f2e05184e4847c197d05ec146b
Author: Cyril Hrubis <metan(a)ucw.cz>
Date: Wed Dec 12 01:35:00 2012 +0100
libs: gfx: Hide private symbols.
diff --git a/libs/gfx/GP_FillCircle.gen.c.t b/libs/gfx/GP_FillCircle.gen.c.t
index db72768..90c18c7 100644
--- a/libs/gfx/GP_FillCircle.gen.c.t
+++ b/libs/gfx/GP_FillCircle.gen.c.t
@@ -21,7 +21,7 @@
%% for ps in pixelsizes
-void GP_FillCircle_Raw_{{ ps.suffix }}(GP_Context *context,
+static void GP_FillCircle_Raw_{{ ps.suffix }}(GP_Context *context,
GP_Coord xcenter, GP_Coord ycenter, GP_Size r, GP_Pixel pixel)
{
/* for r == 0, circle degenerates to a point */
diff --git a/libs/gfx/algo/Arc.algo.h b/libs/gfx/algo/Arc.algo.h
index fe94302..baff677 100644
--- a/libs/gfx/algo/Arc.algo.h
+++ b/libs/gfx/algo/Arc.algo.h
@@ -19,7 +19,7 @@
* Copyright (C) 2009-2010 Jiri "BlueBear" Dluhos *
* <jiri.bluebear.dluhos(a)gmail.com> *
* *
- * Copyright (C) 2009-2010 Cyril Hrubis <metan(a)ucw.cz> *
+ * Copyright (C) 2009-2012 Cyril Hrubis <metan(a)ucw.cz> *
* *
*****************************************************************************/
@@ -44,7 +44,7 @@
* FN_NAME - name of the function to be defined
*/
#define DEF_ARCSEGMENT_FN(FN_NAME, CONTEXT_T, PIXVAL_T, PUTPIXEL) -void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, +static void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, unsigned int a, unsigned int b, int direction, double start, double end, PIXVAL_T pixval) { diff --git a/libs/gfx/algo/Circle.algo.h b/libs/gfx/algo/Circle.algo.h
index 76deb83..55c33ed 100644
--- a/libs/gfx/algo/Circle.algo.h
+++ b/libs/gfx/algo/Circle.algo.h
@@ -19,7 +19,7 @@
* Copyright (C) 2009-2011 Jiri "BlueBear" Dluhos *
* <jiri.bluebear.dluhos(a)gmail.com> *
* *
- * Copyright (C) 2009-2011 Cyril Hrubis <metan(a)ucw.cz> *
+ * Copyright (C) 2009-2012 Cyril Hrubis <metan(a)ucw.cz> *
* *
*****************************************************************************/
@@ -74,7 +74,7 @@
* FN_NAME - name of the function to be defined
*/
#define DEF_CIRCLE_FN(FN_NAME, CONTEXT_T, PIXVAL_T, PUTPIXEL) -void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, int r, +static void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, int r, PIXVAL_T pixval) { int x, y, error; diff --git a/libs/gfx/algo/CircleSeg.algo.h b/libs/gfx/algo/CircleSeg.algo.h
index 0b3931b..de3de08 100644
--- a/libs/gfx/algo/CircleSeg.algo.h
+++ b/libs/gfx/algo/CircleSeg.algo.h
@@ -74,7 +74,7 @@
* FN_NAME - name of the function to be defined
*/
#define DEF_CIRCLE_SEG_FN(FN_NAME, CONTEXT_T, PIXVAL_T, PUTPIXEL) -void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, int r, +static void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, int r, uint8_t seg_flags, PIXVAL_T pixval) { int x, y, error; diff --git a/libs/gfx/algo/Ellipse.algo.h b/libs/gfx/algo/Ellipse.algo.h
index 58c4c8a..f10fbb0 100644
--- a/libs/gfx/algo/Ellipse.algo.h
+++ b/libs/gfx/algo/Ellipse.algo.h
@@ -19,7 +19,7 @@
* Copyright (C) 2009-2010 Jiri "BlueBear" Dluhos *
* <jiri.bluebear.dluhos(a)gmail.com> *
* *
- * Copyright (C) 2009-2010 Cyril Hrubis <metan(a)ucw.cz> *
+ * Copyright (C) 2009-2012 Cyril Hrubis <metan(a)ucw.cz> *
* *
*****************************************************************************/
@@ -72,7 +72,7 @@
* FN_NAME - name of the function to be defined
*/
#define DEF_ELLIPSE_FN(FN_NAME, CONTEXT_T, PIXVAL_T, PUTPIXEL) -void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, +static void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, unsigned int a, unsigned int b, PIXVAL_T pixval) { /* Precompute quadratic terms. */ diff --git a/libs/gfx/algo/FillEllipse.algo.h b/libs/gfx/algo/FillEllipse.algo.h
index aa92537..76da4bd 100644
--- a/libs/gfx/algo/FillEllipse.algo.h
+++ b/libs/gfx/algo/FillEllipse.algo.h
@@ -19,7 +19,7 @@
* Copyright (C) 2009-2010 Jiri "BlueBear" Dluhos *
* <jiri.bluebear.dluhos(a)gmail.com> *
* *
- * Copyright (C) 2009-2010 Cyril Hrubis <metan(a)ucw.cz> *
+ * Copyright (C) 2009-2012 Cyril Hrubis <metan(a)ucw.cz> *
* *
*****************************************************************************/
@@ -41,7 +41,7 @@
* FN_NAME - name of the function to be defined
*/
#define DEF_FILLELLIPSE_FN(FN_NAME, CONTEXT_T, PIXVAL_T, HLINE) -void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, +static void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, unsigned int a, unsigned int b, PIXVAL_T pixval) { /* Precompute quadratic terms. */ diff --git a/libs/gfx/algo/FillRing.algo.h b/libs/gfx/algo/FillRing.algo.h
index 9b3a002..0238a63 100644
--- a/libs/gfx/algo/FillRing.algo.h
+++ b/libs/gfx/algo/FillRing.algo.h
@@ -19,7 +19,7 @@
* Copyright (C) 2009-2010 Jiri "BlueBear" Dluhos *
* <jiri.bluebear.dluhos(a)gmail.com> *
* *
- * Copyright (C) 2009-2010 Cyril Hrubis <metan(a)ucw.cz> *
+ * Copyright (C) 2009-2012 Cyril Hrubis <metan(a)ucw.cz> *
* *
*****************************************************************************/
@@ -36,7 +36,7 @@
* FN_NAME - name of the function to be defined
*/
#define DEF_FILLRING_FN(FN_NAME, CONTEXT_T, PIXVAL_T, HLINE) -void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, +static void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, unsigned int r1, unsigned int r2, PIXVAL_T pixval) { int outer_r = (int) GP_MAX(r1, r2); diff --git a/libs/gfx/algo/PartialEllipse.algo.h b/libs/gfx/algo/PartialEllipse.algo.h
index 266be52..58aea30 100644
--- a/libs/gfx/algo/PartialEllipse.algo.h
+++ b/libs/gfx/algo/PartialEllipse.algo.h
@@ -19,7 +19,7 @@
* Copyright (C) 2009-2010 Jiri "BlueBear" Dluhos *
* <jiri.bluebear.dluhos(a)gmail.com> *
* *
- * Copyright (C) 2009-2010 Cyril Hrubis <metan(a)ucw.cz> *
+ * Copyright (C) 2009-2012 Cyril Hrubis <metan(a)ucw.cz> *
* *
*****************************************************************************/
@@ -36,7 +36,7 @@
* FN_NAME - name of the function to be defined
*/
#define DEF_PARTIAL_ELLIPSE_FN(FN_NAME, CONTEXT_T, PIXVAL_T, PUTPIXEL) -void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, int a, int b, +static void FN_NAME(CONTEXT_T context, int xcenter, int ycenter, int a, int b, int start, int end, PIXVAL_T pixval) { double startAngle = GP_NormalizeAngle(2*M_PI*(start / 360000.0));
-----------------------------------------------------------------------
Summary of changes:
libs/gfx/GP_FillCircle.gen.c.t | 2 +-
libs/gfx/algo/Arc.algo.h | 4 ++--
libs/gfx/algo/Circle.algo.h | 4 ++--
libs/gfx/algo/CircleSeg.algo.h | 2 +-
libs/gfx/algo/Ellipse.algo.h | 4 ++--
libs/gfx/algo/FillEllipse.algo.h | 4 ++--
libs/gfx/algo/FillRing.algo.h | 4 ++--
libs/gfx/algo/PartialEllipse.algo.h | 4 ++--
8 files changed, 14 insertions(+), 14 deletions(-)
repo.or.cz automatic notification. Contact project admin jiri.bluebear.dluhos(a)gmail.com
if you want to unsubscribe, or site admin admin(a)repo.or.cz if you receive
no reply.
--
gfxprim.git ("A simple 2D graphics library with emphasis on correctness and well-defined operation.")
1
0
[repo.or.cz] gfxprim.git branch master updated: e77a976b35f4bec8d5d2f95de598e4944870bf8b
by metan 12 Dec '12
by metan 12 Dec '12
12 Dec '12
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project gfxprim.git.
The branch, master has been updated
via e77a976b35f4bec8d5d2f95de598e4944870bf8b (commit)
via 727e017e08f72a196402a2cdc6c6baf7d150bfff (commit)
via 6bc3ae46901a2695b24e89b94cfa7c443d4a43db (commit)
from 6ab18e99fea64799e1d887ba90b08a6cdec016df (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://repo.or.cz/w/gfxprim.git/commit/e77a976b35f4bec8d5d2f95de598e4944870…
commit e77a976b35f4bec8d5d2f95de598e4944870bf8b
Author: Cyril Hrubis <metan(a)ucw.cz>
Date: Wed Dec 12 01:27:41 2012 +0100
build: Edhance exported symbols detection.
diff --git a/build/check_symbols.sh b/build/check_symbols.sh
index d21076c..9625ff6 100755
--- a/build/check_symbols.sh
+++ b/build/check_symbols.sh
@@ -8,27 +8,28 @@ SYMBOLFILE=libGP_symbols.txt
function grep_sym
{
if objdump --syms "$1" |grep "$2" 2>&1 > /dev/null; then
- echo "SYM: $2 : $1"
+ echo -e "t$1"
fi
}
function find_symbol
{
+ echo "SYM $1:"
+
find ../libs/ -name '*.o' | while read obj; do grep_sym "$obj" "$1"; done
}
objdump --dynamic-syms libGP.so | awk 'NR > 4 { print }' | awk '$3 != "*UND*"' | awk '{print $NF}' > $SYMBOLFILE
#
-# Remove a few known symbols
+# Remove compiler and glibc symbols
#
-sed -i '/.init/d' $SYMBOLFILE
-sed -i '/_init/d' $SYMBOLFILE
-sed -i '/_end/d' $SYMBOLFILE
-sed -i '/_fini/d' $SYMBOLFILE
+sed -i '/^.init$/d' $SYMBOLFILE
+sed -i '/^__.*$/d' $SYMBOLFILE
+sed -i '/^_.*$/d' $SYMBOLFILE
for i in `cat libGP_symbols.txt`; do
- if ! grep "$i" libGP_expected_symbols.txt 2>&1 > /dev/null; then
+ if ! grep "$i" syms/*.txt 2>&1 > /dev/null; then
find_symbol "$i"
fi
done
diff --git a/build/libGP_expected_symbols.txt b/build/libGP_expected_symbols.txt
deleted file mode 100644
index 0d9d566..0000000
--- a/build/libGP_expected_symbols.txt
+++ /dev/null
@@ -1,536 +0,0 @@
-GP_Line_Raw
-GP_WritePixels2bpp
-GP_FilterParamCheckPixelType
-GP_FillEllipse_Raw_2BPP_LE
-GP_FilterFloydSteinberg_RGB888_to_RGB565_Raw
-GP_FillTetragon
-GP_MatchPSP
-GP_FilterAddition_Raw
-GP_PartialEllipse_Raw_2BPP_BE
-GP_FillSymbol
-GP_ArcSegment_Raw_2BPP_BE
-GP_Circle_Raw_2BPP_BE
-GP_FilterLaplace
-GP_FilterHLinearConvolution_Raw
-GP_LoadImage
-GP_WritePixels1bpp
-GP_PixelSNPrint_RGB888
-GP_BlitXYXY
-GP_FillTriangle
-GP_OpenJPG
-GP_FillTriangle_Raw
-GP_BlitXYXY_Fast
-GP_FilterInvert_Raw
-GP_PutPixel
-GP_Line_Raw_4BPP_LE
-GP_Ellipse_Raw_8BPP
-GP_FillCircle_Raw_4BPP_LE
-GP_FilterRotate270_Raw_24BPP
-GP_FilterConvolutionExAlloc
-GP_FilterFloydSteinberg_RGB888_to_xRGB7333_Raw
-GP_FillRing_Raw
-GP_FilterParamSetFloatAll
-GP_FilterRotate90_Raw_2BPP_BE
-GP_LoadGIF
-GP_FilterSymmetry
-GP_MetaDataCreateRat
-GP_FilterSymmetry_Alloc
-GP_FilterNoise
-GP_HLineXYW_Raw
-GP_FillEllipse_Raw_32BPP
-GP_FilterRotate90_Raw_8BPP
-GP_MetaDataCreateInt
-GP_Line_Raw_2BPP_BE
-GP_ArcSegment_Raw_24BPP
-GP_FillCircle_Raw
-GP_PixelRGBLookup
-GP_FilterParamSetIntAll
-GP_VLine_18BPP_LE
-GP_FilterBrightness
-GP_VLine_8BPP
-GP_FilterHilbertPeano_RGB888_to_G8_Raw
-GP_CircleSeg_Raw_4BPP_BE
-GP_Line_Raw_32BPP
-GP_Circle_Raw_18BPP_LE
-GP_FillEllipse_Raw_1BPP_BE
-GP_LineAA
-GP_FilterParamSetUIntAll
-GP_ReadGIF
-GP_FilterLaplaceAlloc
-GP_NormInt
-GP_PartialEllipse_Raw_16BPP
-GP_SavePBM
-GP_Symbol
-GP_ContextResize
-GP_EventKeyName
-GP_WritePixels18bpp
-GP_FilterFloydSteinberg_RGB888_to_G8_Raw
-GP_FillRectXYXY_Raw
-GP_FontFaceLoad
-GP_HLine_Raw_32BPP
-GP_Text_Raw
-GP_FillRectXYWH_Raw
-GP_Circle_Raw_24BPP
-GP_CircleSeg_Raw_1BPP_LE
-GP_EventPushAbs
-GP_MirrorV_Raw_4BPP_BE
-GP_Linear10_Gamma8
-GP_HLine_Raw_8BPP
-GP_FilterHilbertPeano_RGB888_to_RGB666_Raw
-GP_FilterHilbertPeano_RGB888_to_G4_Raw
-GP_LoaderRegister
-GP_FilterResizeNN
-GP_OpenBMP
-GP_SaveImage
-GP_FilterRotate90_Raw_32BPP
-GP_VLineAA
-GP_FillRing_Raw_2BPP_LE
-GP_FilterFloydSteinberg_RGB888_to_G4_Raw
-GP_WritePixels16bpp
-GP_FilterResizeCubicInt
-GP_MetaDataCreateRecord
-GP_MirrorV_Raw_1BPP_LE
-GP_EventSetScreenSize
-GP_FilterMirrorV_Raw
-GP_FilterConvolutionMP_Raw
-GP_FilterContrast
-GP_FilterFloydSteinberg_RGB888_to_RGB888_Raw
-GP_Ellipse_Raw_24BPP
-GP_PixelSNPrint_xRGB14666
-GP_RectXYWH
-GP_ListLoaders
-GP_HLineAA
-GP_VLine_4BPP_BE
-GP_FilterHilbertPeano_RGB888_to_xRGB14666_Raw
-GP_FilterParamDestroy
-GP_PixelSNPrint_P2
-GP_FillRing_Raw_8BPP
-GP_PixelSNPrint_P4
-GP_PixelSNPrint_P8
-GP_LoadPNG
-GP_FillSymbol_Raw
-GP_FillEllipse_Raw_8BPP
-GP_GetGlyphCount
-GP_PartialEllipse_Raw_4BPP_LE
-GP_VLine_1BPP_LE
-GP_FillCircle_Raw_16BPP
-GP_FilterGaussianBlurEx
-GP_CircleSeg_Raw_16BPP
-GP_MetaDataGetInt
-GP_FilterHilbertPeano_RGB888_to_BGR888_Raw
-GP_TextAscent
-GP_EventPushKey
-GP_ReadPNG
-GP_NormalizeAngle
-GP_FilterParamCheckChannels
-GP_PartialEllipse_Raw_18BPP_LE
-GP_CircleSeg_Raw_8BPP
-GP_HLine_Raw_4BPP_BE
-GP_FillRing_Raw_1BPP_BE
-GP_FilterRotate180_Raw
-GP_Ellipse_Raw_4BPP_BE
-GP_ReadJPGMetaData
-GP_FilterEdgeSobel
-GP_VLine_24BPP
-GP_FilterHilbertPeano_RGB888
-GP_ReadPNM
-GP_EventGet
-GP_FilterParamPrintInt
-GP_FilterFloydSteinberg_RGB888_to_xRGB2222_Raw
-GP_FilterMirrorV_Alloc
-GP_FilterRotate90_Raw_4BPP_LE
-GP_WritePixels_1BPP_LE
-GP_DefaultConsoleFont
-GP_FilterParamPrintPtr
-GP_FilterMultiply_Raw
-GP_PartialEllipse
-GP_FillEllipse_Raw_18BPP_LE
-GP_VLine_2BPP_LE
-GP_FilterLinearConvolution_Raw
-GP_FilterRotate270_Raw_4BPP_BE
-GP_FillRing_Raw_32BPP
-GP_MirrorV_Raw_16BPP
-GP_HLine_Raw_1BPP_LE
-GP_MatchJPG
-GP_ContextConvertAlloc
-GP_FilterPoint
-GP_Ellipse_Raw_1BPP_LE
-GP_RectXYXY
-GP_FilterKernelPrint_Raw
-GP_InputDriverLinuxRead
-GP_PixelToRGB888
-GP_PXMSave8bpp
-GP_DebugPrint
-GP_TextMaxStrWidth
-GP_FilterRotate90_Raw_18BPP_LE
-GP_FilterPoint_Raw
-GP_FillCircle_Raw_8BPP
-GP_FilterRotate270_Raw_1BPP_LE
-GP_FillRectXYXY_AA
-GP_FilterFloydSteinberg_RGB888_to_RGB666_Raw
-GP_WritePNM
-GP_FilterVHLinearConvolution_Raw
-GP_InputDriverSDLEventPut
-GP_SaveTmpFile
-GP_OpenGIF
-GP_FillPolygon_Raw
-GP_FilterAdditionAlloc
-GP_ArcSegment
-GP_FilterInterpolate_Cubic
-GP_LoadPPM
-GP_FilterHistogramAlloc
-GP_ColorToPixel
-GP_FilterHistogram
-GP_FilterRotate270_Raw_32BPP
-GP_ArcSegment_Raw_4BPP_BE
-GP_Circle_Raw_4BPP_BE
-GP_Triangle_Raw
-GP_MetaDataClear
-GP_EventQueued
-GP_VLineXYH_Raw
-GP_Circle
-GP_ColorNameToPixel
-GP_VLineXYH
-GP_ColorLoadPixels
-GP_NrThreads
-GP_ArcSegment_Raw_32BPP
-GP_FillEllipse_Raw_2BPP_BE
-GP_MatchBMP
-GP_ArcSegment_Raw_8BPP
-GP_RGBA8888ToPixel
-GP_Circle_Raw_1BPP_LE
-GP_ArcSegment_Raw_1BPP_LE
-GP_FilterMax
-GP_FilterVConvolutionMP_Raw
-GP_FilterNoise_Raw
-GP_PartialEllipse_Raw_24BPP
-GP_FillRectXYXY_AA_Raw
-GP_VLineXYY
-GP_FilterFloydSteinberg_RGB888_to_BGR888_Raw
-GP_CircleSeg_Raw_2BPP_LE
-GP_MetaDataFromExif
-GP_Circle_Raw_32BPP
-GP_SubContextAlloc
-GP_Line_Raw_4BPP_BE
-GP_ContextRotateCW
-GP_FilterHilbertPeano_RGB888_Raw
-GP_FilterInterpolate_LinearLFInt
-GP_FillPolygon
-GP_FilterHilbertPeano_RGB888_to_G1_Raw
-GP_FillCircle_Raw_4BPP_BE
-GP_FilterRotate90_Raw_1BPP_LE
-GP_FilterRotate270_Alloc
-GP_SavePGM
-GP_PXMSave2bpp
-GP_NrThreadsSet
-GP_PixelSNPrint_VA12
-GP_FilterGaussianNoiseAddEx
-GP_MetaDataGetDouble
-GP_FilterFloydSteinberg_RGB888_to_G1_Raw
-GP_InputDriverKBDEventPut
-GP_MirrorV_Raw_2BPP_LE
-GP_RectXYXY_Raw
-GP_VLineXYY_Raw
-GP_SaveJPG
-GP_ContextCopy
-GP_Ellipse_Raw
-GP_RectXYWH_Raw
-GP_Line_Raw_1BPP_LE
-GP_WritePixels24bpp
-GP_PixelRGBMatch
-GP_PXMSave1bpp
-GP_LoadPBM
-GP_OpenPNG
-GP_FillCircle_Raw_1BPP_LE
-GP_FillRectXYWH_AA
-GP_FilterEdgePrewitt
-GP_Ellipse_Raw_32BPP
-GP_FilterParamSetFloat
-GP_PixelTypeByName
-GP_LoadJPGMetaData
-GP_FilterRotate90_Raw
-GP_RGB888ToPixel
-GP_Line_Raw_18BPP_LE
-GP_Polygon
-GP_MatchSignature
-GP_FilterSymmetryNames
-GP_FillRing_Raw_4BPP_LE
-GP_FilterSymmetryByName
-GP_HLine_Raw_18BPP_LE
-GP_Ring
-GP_FilterParamCreate
-GP_Gamma8_Linear10
-GP_CircleSeg_Raw_1BPP_BE
-GP_HLineAA_Raw
-GP_FillCircle
-GP_ContextRotateCCW
-GP_FillCircle_Raw_24BPP
-GP_FillRectXYWH
-GP_FillCircle_Raw_2BPP_LE
-GP_Circle_Raw_8BPP
-GP_FilterMirrorH_Alloc
-GP_InputDriverLinuxClose
-GP_CircleSeg_Raw_24BPP
-GP_FillEllipse_Raw_16BPP
-GP_ProgressCallbackMP
-GP_FilterHilbertPeano_RGB888_to_xRGB8888_Raw
-GP_CircleSeg
-GP_FillRing_Raw_2BPP_BE
-GP_BlitXYXY_Raw
-GP_FilterDifferenceAlloc
-GP_BlitXYWH_Raw
-GP_MetaDataPrint
-GP_Line_Raw_16BPP
-GP_MirrorV_Raw_1BPP_BE
-GP_WritePixels_2BPP_LE
-GP_VLine_32BPP
-GP_GammaRelease
-GP_FilterWeightedMedianExAlloc
-GP_InputDriverX11EventPut
-GP_LoadPSP
-GP_MetaDataCreate
-GP_GetDebugLevel
-GP_FilterEdgeSharpeningAlloc
-GP_MetaDataCreateString
-GP_HLine_Raw_2BPP_LE
-GP_FilterMinAlloc
-GP_Ellipse_Raw_2BPP_LE
-GP_HLine_Raw_16BPP
-GP_MirrorV_Raw_24BPP
-GP_MatchGIF
-GP_FilterWeightedMedianEx
-GP_BlitXYXY_Raw_Fast
-GP_FillEllipse_Raw_4BPP_LE
-GP_FillCircle_Raw_18BPP_LE
-GP_BlitXYXY_Clipped
-GP_FilterRotate90_Alloc
-GP_ReadPSP
-GP_FilterRotate270_Raw_2BPP_LE
-GP_FilterInterpolate_LinearInt
-GP_ReadPNGMetaData
-GP_TextClearStr
-GP_PartialEllipse_Raw_4BPP_BE
-GP_LineAA_Raw
-GP_EventSetScreenCursor
-GP_VLine_1BPP_BE
-GP_FilterRotate90_Raw_16BPP
-GP_FilterSigmaEx
-GP_ContextPrintInfo
-GP_FilterGaussianNoiseAdd_Raw
-GP_FillTetragon_Raw
-GP_MirrorV_Raw_18BPP_LE
-GP_ColorToColorName
-GP_InterpolationTypeName
-GP_ArcSegment_Raw
-GP_FillRectXYXY
-GP_FilterRotate270_Raw
-GP_FillRing_Raw_18BPP_LE
-GP_PartialEllipse_Raw_1BPP_LE
-GP_EventPushRelTo
-GP_GammaAcquire
-GP_FilterMultiplyAlloc
-GP_Circle_Raw
-GP_InputDriverLinuxOpen
-GP_FilterParamSetUInt
-GP_PixelSNPrint_G1
-GP_PutPixelAA_Raw_Clipped
-GP_PixelSNPrint_G2
-GP_FilterHilbertPeano_RGB888_to_RGB565_Raw
-GP_FilterRotate90_Raw_4BPP_BE
-GP_PixelSNPrint_G4
-GP_PXMLoad8bpp
-GP_PixelSNPrint_RGBA8888
-GP_Line
-GP_PixelSNPrint_G8
-GP_PixelSNPrint_RGB565
-GP_VLine_2BPP_BE
-GP_FilterContrast_Raw
-GP_HLine_Raw_1BPP_BE
-GP_EventPushResize
-GP_Ellipse_Raw_1BPP_BE
-GP_ContextConvert
-GP_HLineXXY_Raw
-GP_GetPixel
-GP_LoadMetaData
-GP_FilterMultiply
-GP_FilterFloydSteinberg_RGB888_to_xRGB8888_Raw
-GP_PartialEllipse_Raw_2BPP_LE
-GP_Circle_Raw_2BPP_LE
-GP_FilterDifference_Raw
-GP_FilterHilbertPeano_RGB888_to_G2_Raw
-GP_ArcSegment_Raw_2BPP_LE
-GP_FilterRotate270_Raw_1BPP_BE
-GP_FilterRotate270_Raw_8BPP
-GP_ColorNameToColor
-GP_LoadTmpFile
-GP_FilterFloydSteinberg_RGB888_to_G2_Raw
-GP_PartialEllipse_Raw_32BPP
-GP_EventDump
-GP_SetDebugLevel
-SWIG_exception
-GP_DefaultStyle
-GP_MatchPNG
-GP_FilterParamChannel
-GP_PixelTypes
-GP_FillRing_Raw_16BPP
-GP_Tetragon
-GP_FilterHilbertPeano_RGB888_to_xRGB7333_Raw
-GP_FilterResize_Raw
-GP_FilterRotate90_Raw_2BPP_LE
-GP_SubContext
-GP_Triangle
-GP_GammaCopy
-GP_FilterHistogram_Raw
-GP_PXMLoad4bpp
-GP_FillEllipse
-GP_FilterGaussianBlurExAlloc
-GP_Line_Raw_2BPP_LE
-GP_FilterInvert
-GP_PixelSNPrint_RGB666
-GP_Symbol_Raw
-GP_FilterResize
-GP_CircleSeg_Raw_4BPP_LE
-GP_WritePixels32bpp
-GP_FillEllipse_Raw_1BPP_LE
-GP_FillRectXYWH_AA_Raw
-GP_Text
-GP_Line_Raw_8BPP
-GP_FilterRotate180_Alloc
-GP_Circle_Raw_1BPP_BE
-GP_ArcSegment_Raw_1BPP_BE
-GP_PixelSNPrint_xRGB8888
-GP_MetaDataCreateDouble
-GP_FilterFloydSteinberg_RGB888_to_xRGB14666_Raw
-GP_PixelToRGBA8888
-GP_FilterParamChannels
-GP_MetaDataDestroy
-GP_FilterSigmaExAlloc
-GP_ContextInit
-GP_FilterFloydSteinberg_RGB888_Alloc
-GP_PXMLoad2bpp
-GP_FillEllipse_Raw
-GP_FillRing
-GP_TextDescent
-GP_EventPush
-GP_MirrorV_Raw_4BPP_LE
-GP_LoadPGM
-GP_CircleSeg_Raw_2BPP_BE
-GP_FilterRotate270_Raw_16BPP
-GP_FilterRotate180
-GP_Ellipse
-GP_FilterVLinearConvolution_Raw
-GP_OpenPSP
-GP_LoadJPG
-GP_PXMLoad1bpp
-GP_MirrorV_Raw_8BPP
-GP_FontFaceFree
-GP_FillCircle_Raw_32BPP
-GP_FilterMin_Raw
-GP_FilterRotate90_Raw_1BPP_BE
-GP_CircleSeg_Raw_32BPP
-GP_LoadPNGMetaData
-GP_FillEllipse_Raw_24BPP
-GP_FilterRotate270
-GP_PartialEllipse_Raw_8BPP
-GP_ArcSegment_Raw_16BPP
-GP_MirrorV_Raw_2BPP_BE
-GP_FilterMirrorH_Raw
-GP_Line_Raw_1BPP_BE
-GP_CircleSeg_Raw
-GP_Line_Raw_24BPP
-GP_VLine_4BPP_LE
-GP_FillCircle_Raw_1BPP_BE
-GP_ReadJPG
-GP_Print
-GP_FilterHilbertPeano_RGB888_Alloc
-GP_FilterDifference
-GP_DefaultProportionalFont
-GP_FilterBrightness_Raw
-GP_HLine_Raw_24BPP
-GP_Circle_Raw_16BPP
-GP_FilterRotate270_Raw_18BPP_LE
-GP_EventPushRel
-GP_MirrorV_Raw_32BPP
-GP_FilterFloydSteinberg_RGB888_Raw
-GP_FilterHConvolutionMP_Raw
-GP_TextWidth
-GP_FilterParamFreePtrAll
-GP_FilterParamPrintUInt
-GP_FillRing_Raw_4BPP_BE
-GP_FilterMax_Raw
-GP_ArcSegment_Raw_18BPP_LE
-GP_SavePNG
-GP_WritePixels_4BPP_LE
-GP_HLineXXY
-GP_FilterResizeNN_Raw
-GP_FilterRotate90_Raw_24BPP
-GP_DefaultTextStyle
-GP_WritePixels8bpp
-GP_FillCircle_Raw_2BPP_BE
-GP_CubicTable
-GP_HLine_Raw_4BPP_LE
-GP_FilterMin
-GP_FilterAddition
-GP_GetGlyphBitmap
-GP_Ellipse_Raw_18BPP_LE
-GP_Ellipse_Raw_4BPP_LE
-GP_FillRing_Raw_1BPP_LE
-GP_FilterGaussianBlur_Raw
-GP_PutPixelAA_Raw
-GP_TextClear
-GP_FilterHilbertPeano_RGB888_to_xRGB2222_Raw
-GP_LoadBMP
-GP_Ellipse_Raw_16BPP
-GP_PutPixelAA
-GP_FilterRotate270_Raw_4BPP_LE
-GP_CircleSeg_Raw_18BPP_LE
-GP_BlitXYWH_Clipped
-GP_FilterMedianEx
-GP_Tetragon_Raw
-GP_PartialEllipse_Raw
-GP_ContextFree
-GP_FilterResizeNNAlloc
-GP_HLine_Raw_2BPP_BE
-GP_Ellipse_Raw_2BPP_BE
-GP_FilterMirrorH
-GP_HLineXYW
-GP_LoaderUnregister
-GP_VLineAA_Raw
-GP_ReadBMP
-GP_FilterGaussianNoiseAddExAlloc
-GP_FillEllipse_Raw_4BPP_BE
-GP_FilterResizeCubicInt_Raw
-GP_TextMaxWidth
-GP_FilterRotate270_Raw_2BPP_BE
-GP_BlitXYWH
-GP_FilterMirrorV
-GP_PixelAddrOffset
-GP_PixelSNPrint_xRGB2222
-GP_FilterMaxAlloc
-GP_VLine_16BPP
-GP_FilterMedianExAlloc
-GP_TextHeight
-GP_FilterParamInitChannels
-GP_WritePixels4bpp
-GP_Ring_Raw
-GP_FilterEdgeSharpening
-GP_FilterParamSetInt
-GP_FilterResizeCubicIntAlloc
-GP_AngleInRange
-GP_PartialEllipse_Raw_1BPP_BE
-GP_FilterConvolutionEx
-GP_FilterParamSetPtr
-GP_FillRing_Raw_24BPP
-GP_FilterRotate90
-GP_FilterParamPrintFloat
-GP_PixelSNPrint_BGR888
-GP_FilterFloydSteinberg_RGB888
-GP_Circle_Raw_4BPP_LE
-GP_ArcSegment_Raw_4BPP_LE
-GP_SavePPM
-GP_PixelSNPrint_xRGB7333
-GP_Polygon_Raw
-GP_FilterParamSetPtrAll
-GP_MetaDataGetString
-GP_ContextAlloc
-GP_FilterHilbertPeano_RGB888_to_RGB888_Raw
diff --git a/build/syms/Core_symbols.txt b/build/syms/Core_symbols.txt
new file mode 100644
index 0000000..5033860
--- /dev/null
+++ b/build/syms/Core_symbols.txt
@@ -0,0 +1,66 @@
+GP_PixelTypes
+
+GP_ContextAlloc
+GP_ContextResize
+GP_ContextConvertAlloc
+GP_ContextPrintInfo
+GP_ContextRotateCCW
+GP_SubContextAlloc
+GP_ContextConvert
+GP_ContextRotateCW
+GP_ContextFree
+GP_ContextInit
+GP_SubContext
+GP_ContextCopy
+GP_PixelAddrOffset
+
+GP_GammaRelease
+GP_GammaCopy
+GP_GammaAcquire
+
+GP_DebugPrint
+GP_SetDebugLevel
+GP_GetDebugLevel
+
+GP_ColorToPixel
+GP_ColorLoadPixels
+GP_RGBA8888ToPixel
+GP_PixelRGBMatch
+GP_PixelTypeByName
+GP_RGB888ToPixel
+
+GP_BlitXYXY
+GP_BlitXYXY_Fast
+GP_BlitXYWH
+GP_BlitXYWH_Clipped
+GP_BlitXYXY_Clipped
+GP_BlitXYXY_Raw_Fast
+GP_BlitXYWH_Raw
+GP_BlitXYXY_Raw
+
+GP_WritePixels_1BPP_LE
+GP_WritePixels_2BPP_LE
+GP_WritePixels_4BPP_LE
+GP_WritePixels1bpp
+GP_WritePixels2bpp
+GP_WritePixels4bpp
+GP_WritePixels8bpp
+GP_WritePixels16bpp
+GP_WritePixels18bpp
+GP_WritePixels32bpp
+GP_WritePixels24bpp
+
+GP_PutPixel
+GP_GetPixel
+GP_PixelRGBLookup
+GP_PixelToRGB888
+GP_ColorNameToPixel
+GP_ColorNameToColor
+GP_ColorToColorName
+GP_PixelToRGBA8888
+
+GP_NrThreads
+GP_NrThreadsSet
+GP_ProgressCallbackMP
+
+SWIG_exception
diff --git a/build/syms/Event_symbols.txt b/build/syms/Event_symbols.txt
new file mode 100644
index 0000000..9f80506
--- /dev/null
+++ b/build/syms/Event_symbols.txt
@@ -0,0 +1,19 @@
+GP_EventKeyName
+GP_EventPushAbs
+GP_EventSetScreenSize
+GP_EventPushKey
+GP_EventGet
+GP_EventPushRel
+GP_EventPush
+GP_EventDump
+GP_EventPushResize
+GP_EventPushRelTo
+GP_EventSetScreenCursor
+GP_EventQueued
+
+GP_InputDriverLinuxRead
+GP_InputDriverSDLEventPut
+GP_InputDriverLinuxOpen
+GP_InputDriverX11EventPut
+GP_InputDriverLinuxClose
+GP_InputDriverKBDEventPut
diff --git a/build/syms/Filters_symbols.txt b/build/syms/Filters_symbols.txt
new file mode 100644
index 0000000..25a3696
--- /dev/null
+++ b/build/syms/Filters_symbols.txt
@@ -0,0 +1,179 @@
+GP_CubicTable
+
+GP_FilterAddition
+GP_FilterAdditionAlloc
+GP_FilterAddition_Raw
+
+GP_FilterBrightness
+GP_FilterBrightness_Raw
+
+GP_FilterContrast
+GP_FilterContrast_Raw
+
+GP_FilterConvolutionEx
+GP_FilterConvolutionExAlloc
+GP_FilterConvolutionMP_Raw
+
+GP_FilterDifference
+GP_FilterDifferenceAlloc
+GP_FilterDifference_Raw
+
+GP_FilterEdgePrewitt
+
+GP_FilterEdgeSharpening
+
+GP_FilterEdgeSharpeningAlloc
+
+GP_FilterEdgeSobel
+
+GP_FilterFloydSteinberg_RGB888
+GP_FilterFloydSteinberg_RGB888_Alloc
+GP_FilterFloydSteinberg_RGB888_Raw
+GP_FilterFloydSteinberg_RGB888_to_BGR888_Raw
+GP_FilterFloydSteinberg_RGB888_to_G1_Raw
+GP_FilterFloydSteinberg_RGB888_to_G2_Raw
+GP_FilterFloydSteinberg_RGB888_to_G4_Raw
+GP_FilterFloydSteinberg_RGB888_to_G8_Raw
+GP_FilterFloydSteinberg_RGB888_to_RGB565_Raw
+GP_FilterFloydSteinberg_RGB888_to_RGB666_Raw
+GP_FilterFloydSteinberg_RGB888_to_RGB888_Raw
+GP_FilterFloydSteinberg_RGB888_to_xRGB14666_Raw
+GP_FilterFloydSteinberg_RGB888_to_xRGB2222_Raw
+GP_FilterFloydSteinberg_RGB888_to_xRGB7333_Raw
+GP_FilterFloydSteinberg_RGB888_to_xRGB8888_Raw
+
+GP_FilterHilbertPeano_RGB888
+GP_FilterHilbertPeano_RGB888_Alloc
+GP_FilterHilbertPeano_RGB888_Raw
+GP_FilterHilbertPeano_RGB888_to_BGR888_Raw
+GP_FilterHilbertPeano_RGB888_to_G1_Raw
+GP_FilterHilbertPeano_RGB888_to_G2_Raw
+GP_FilterHilbertPeano_RGB888_to_G4_Raw
+GP_FilterHilbertPeano_RGB888_to_G8_Raw
+GP_FilterHilbertPeano_RGB888_to_RGB565_Raw
+GP_FilterHilbertPeano_RGB888_to_RGB666_Raw
+GP_FilterHilbertPeano_RGB888_to_RGB888_Raw
+GP_FilterHilbertPeano_RGB888_to_xRGB14666_Raw
+GP_FilterHilbertPeano_RGB888_to_xRGB2222_Raw
+GP_FilterHilbertPeano_RGB888_to_xRGB7333_Raw
+GP_FilterHilbertPeano_RGB888_to_xRGB8888_Raw
+
+GP_FilterGaussianBlurEx
+GP_FilterGaussianBlurExAlloc
+GP_FilterGaussianBlur_Raw
+
+GP_FilterGaussianNoiseAddEx
+GP_FilterGaussianNoiseAddExAlloc
+GP_FilterGaussianNoiseAdd_Raw
+
+GP_FilterHConvolutionMP_Raw
+GP_FilterHLinearConvolution_Raw
+
+GP_FilterHistogram
+GP_FilterHistogramAlloc
+GP_FilterHistogram_Raw
+
+GP_FilterInterpolate_Cubic
+GP_FilterInterpolate_LinearInt
+GP_FilterInterpolate_LinearLFInt
+
+GP_FilterInvert
+GP_FilterInvert_Raw
+
+GP_FilterKernelPrint_Raw
+
+GP_FilterLaplace
+GP_FilterLaplaceAlloc
+GP_FilterLinearConvolution_Raw
+
+GP_FilterMax
+GP_FilterMaxAlloc
+GP_FilterMax_Raw
+
+GP_FilterMedianEx
+GP_FilterMedianExAlloc
+
+GP_FilterMin
+GP_FilterMinAlloc
+GP_FilterMin_Raw
+
+GP_FilterMirrorH
+GP_FilterMirrorH_Alloc
+GP_FilterMirrorH_Raw
+
+GP_FilterMirrorV
+GP_FilterMirrorV_Alloc
+GP_FilterMirrorV_Raw
+
+GP_FilterMultiply
+GP_FilterMultiplyAlloc
+GP_FilterMultiply_Raw
+
+GP_FilterNoise
+GP_FilterNoise_Raw
+
+GP_FilterParamChannel
+GP_FilterParamChannels
+GP_FilterParamCheckChannels
+GP_FilterParamCheckPixelType
+GP_FilterParamCreate
+GP_FilterParamDestroy
+GP_FilterParamFreePtrAll
+GP_FilterParamInitChannels
+GP_FilterParamPrintFloat
+GP_FilterParamPrintInt
+GP_FilterParamPrintPtr
+GP_FilterParamPrintUInt
+GP_FilterParamSetFloat
+GP_FilterParamSetFloatAll
+GP_FilterParamSetInt
+GP_FilterParamSetIntAll
+GP_FilterParamSetPtr
+GP_FilterParamSetPtrAll
+GP_FilterParamSetUInt
+GP_FilterParamSetUIntAll
+
+GP_FilterPoint
+GP_FilterPoint_Raw
+
+GP_FilterResize
+GP_FilterResize_Raw
+
+GP_FilterResizeCubicInt
+GP_FilterResizeCubicIntAlloc
+GP_FilterResizeCubicInt_Raw
+
+GP_FilterResizeNN
+GP_FilterResizeNNAlloc
+GP_FilterResizeNN_Raw
+
+GP_FilterRotate180
+GP_FilterRotate180_Alloc
+GP_FilterRotate180_Raw
+
+GP_FilterRotate270
+GP_FilterRotate270_Alloc
+GP_FilterRotate270_Raw
+
+GP_FilterRotate90
+GP_FilterRotate90_Alloc
+GP_FilterRotate90_Raw
+
+GP_FilterSigmaEx
+GP_FilterSigmaExAlloc
+
+GP_FilterSymmetry
+GP_FilterSymmetryByName
+GP_FilterSymmetryNames
+GP_FilterSymmetry_Alloc
+
+GP_FilterVConvolutionMP_Raw
+GP_FilterVHLinearConvolution_Raw
+GP_FilterVLinearConvolution_Raw
+
+GP_FilterWeightedMedianEx
+GP_FilterWeightedMedianExAlloc
+
+GP_InterpolationTypeName
+
+GP_NormInt
diff --git a/build/syms/GFX_symbols.txt b/build/syms/GFX_symbols.txt
new file mode 100644
index 0000000..c8482d3
--- /dev/null
+++ b/build/syms/GFX_symbols.txt
@@ -0,0 +1,114 @@
+GP_Line_Raw
+GP_Line_Raw_4BPP_LE
+GP_Line_Raw_2BPP_BE
+GP_HLine_Raw_32BPP
+GP_LineAA
+GP_Line_Raw_32BPP
+GP_HLineXYW_Raw
+GP_VLine_18BPP_LE
+GP_VLine_8BPP
+GP_VLine_1BPP_LE
+GP_HLine_Raw_8BPP
+GP_VLineAA
+GP_HLineAA
+GP_VLine_4BPP_BE
+GP_HLineXYW
+GP_VLineAA_Raw
+GP_VLine_16BPP
+GP_HLine_Raw_1BPP_LE
+GP_VLine_2BPP_LE
+GP_VLine_24BPP
+GP_HLine_Raw_4BPP_BE
+GP_HLine_Raw_2BPP_BE
+GP_HLine_Raw_24BPP
+GP_Line_Raw_24BPP
+GP_Line_Raw_1BPP_BE
+GP_VLineXYH_Raw
+GP_VLine_4BPP_LE
+GP_VLine_32BPP
+GP_HLineXXY
+GP_HLine_Raw_4BPP_LE
+GP_Line_Raw_18BPP_LE
+GP_Line_Raw_1BPP_LE
+GP_VLineXYY_Raw
+GP_Line_Raw_4BPP_BE
+GP_VLineXYY
+GP_VLineXYH
+GP_HLineXXY_Raw
+GP_VLine_2BPP_BE
+GP_HLine_Raw_1BPP_BE
+GP_Line
+GP_Line_Raw_8BPP
+GP_Line_Raw_2BPP_LE
+GP_HLine_Raw_18BPP_LE
+GP_HLineAA_Raw
+GP_Line_Raw_16BPP
+GP_HLine_Raw_2BPP_LE
+GP_HLine_Raw_16BPP
+GP_LineAA_Raw
+GP_VLine_1BPP_BE
+
+GP_Circle
+GP_Circle_Raw
+GP_FillCircle
+GP_FillCircle_Raw
+
+GP_CircleSeg
+GP_CircleSeg_Raw
+
+GP_Ring
+GP_Ring_Raw
+GP_FillRing_Raw
+GP_FillRing
+
+GP_Ellipse
+GP_Ellipse_Raw
+GP_FillEllipse
+GP_FillEllipse_Raw
+
+GP_PartialEllipse
+GP_PartialEllipse_Raw
+
+GP_RectXYXY
+GP_RectXYXY_Raw
+GP_RectXYWH
+GP_RectXYWH_Raw
+GP_FillRectXYXY
+GP_FillRectXYXY_Raw
+GP_FillRectXYWH
+GP_FillRectXYWH_Raw
+
+GP_Triangle
+GP_Triangle_Raw
+GP_FillTriangle
+GP_FillTriangle_Raw
+
+GP_Tetragon
+GP_Tetragon_Raw
+GP_FillTetragon
+GP_FillTetragon_Raw
+
+GP_Polygon
+GP_Polygon_Raw
+GP_FillPolygon
+GP_FillPolygon_Raw
+
+GP_Symbol
+GP_Symbol_Raw
+GP_FillSymbol
+GP_FillSymbol_Raw
+
+GP_PutPixelAA
+GP_PutPixelAA_Raw
+GP_PutPixelAA_Raw_Clipped
+
+GP_ArcSegment
+GP_ArcSegment_Raw
+
+GP_FillRectXYXY_AA
+GP_FillRectXYXY_AA_Raw
+GP_FillRectXYWH_AA
+GP_FillRectXYWH_AA_Raw
+
+GP_AngleInRange
+GP_NormalizeAngle
diff --git a/build/syms/Loaders_symbols.txt b/build/syms/Loaders_symbols.txt
new file mode 100644
index 0000000..2de93ed
--- /dev/null
+++ b/build/syms/Loaders_symbols.txt
@@ -0,0 +1,75 @@
+GP_MatchJPG
+GP_OpenJPG
+GP_ReadJPG
+GP_LoadJPG
+GP_SaveJPG
+GP_ReadJPGMetaData
+GP_LoadJPGMetaData
+
+GP_MatchPNG
+GP_OpenPNG
+GP_ReadPNG
+GP_LoadPNG
+GP_ReadPNGMetaData
+GP_LoadPNGMetaData
+GP_SavePNG
+
+GP_MatchBMP
+GP_OpenBMP
+GP_LoadBMP
+GP_ReadBMP
+
+GP_MatchPSP
+GP_OpenPSP
+GP_ReadPSP
+GP_LoadPSP
+
+GP_MatchGIF
+GP_LoadGIF
+GP_ReadGIF
+GP_OpenGIF
+
+GP_SavePPM
+GP_LoadPPM
+
+GP_SavePGM
+GP_LoadPGM
+
+GP_ReadPNM
+GP_WritePNM
+
+GP_SavePBM
+GP_LoadPBM
+
+GP_PXMSave1bpp
+GP_PXMSave2bpp
+GP_PXMSave8bpp
+GP_PXMLoad1bpp
+GP_PXMLoad2bpp
+GP_PXMLoad4bpp
+GP_PXMLoad8bpp
+
+GP_SaveTmpFile
+GP_LoadTmpFile
+
+GP_MatchSignature
+GP_LoadImage
+GP_SaveImage
+GP_LoadMetaData
+GP_ListLoaders
+GP_LoaderRegister
+GP_LoaderUnregister
+
+GP_MetaDataGetString
+GP_MetaDataCreateRat
+GP_MetaDataCreateInt
+GP_MetaDataCreateRecord
+GP_MetaDataGetInt
+GP_MetaDataDestroy
+GP_MetaDataClear
+GP_MetaDataCreateDouble
+GP_MetaDataCreateString
+GP_MetaDataCreate
+GP_MetaDataPrint
+GP_MetaDataGetDouble
+GP_MetaDataFromExif
diff --git a/build/syms/Text_symbols.txt b/build/syms/Text_symbols.txt
new file mode 100644
index 0000000..8dc7ca1
--- /dev/null
+++ b/build/syms/Text_symbols.txt
@@ -0,0 +1,19 @@
+GP_FontFaceLoad
+GP_Text_Raw
+GP_GetGlyphCount
+GP_TextAscent
+GP_TextMaxStrWidth
+GP_DefaultTextStyle
+GP_DefaultProportionalFont
+GP_DefaultConsoleFont
+GP_GetGlyphBitmap
+GP_TextClear
+GP_TextMaxWidth
+GP_TextHeight
+GP_TextWidth
+GP_TextDescent
+GP_Text
+GP_TextClearStr
+GP_Print
+GP_FontFaceFree
+GP_DefaultStyle
http://repo.or.cz/w/gfxprim.git/commit/727e017e08f72a196402a2cdc6c6baf7d150…
commit 727e017e08f72a196402a2cdc6c6baf7d150bfff
Author: Cyril Hrubis <metan(a)ucw.cz>
Date: Wed Dec 12 00:09:30 2012 +0100
libs: Fix visibility of some symbols.
diff --git a/libs/core/GP_Blit.gen.c.t b/libs/core/GP_Blit.gen.c.t
index 988223e..07a153c 100644
--- a/libs/core/GP_Blit.gen.c.t
+++ b/libs/core/GP_Blit.gen.c.t
@@ -17,7 +17,7 @@
/*
* TODO: this is used for same pixel but different offset, could still be optimized
*/
-void blitXYXY_Naive_Raw(const GP_Context *src,
+static void blitXYXY_Naive_Raw(const GP_Context *src,
GP_Coord x0, GP_Coord y0, GP_Coord x1, GP_Coord y1,
GP_Context *dst, GP_Coord x2, GP_Coord y2)
{
@@ -40,7 +40,7 @@ void blitXYXY_Naive_Raw(const GP_Context *src,
/*
* Blit for equal pixel types {{ ps.suffix }}
*/
-void blitXYXY_Raw_{{ ps.suffix }}(const GP_Context *src,
+static void blitXYXY_Raw_{{ ps.suffix }}(const GP_Context *src,
GP_Coord x0, GP_Coord y0, GP_Coord x1, GP_Coord y1,
GP_Context *dst, GP_Coord x2, GP_Coord y2)
{
diff --git a/libs/input/GP_InputDriverLinux.c b/libs/input/GP_InputDriverLinux.c
index fe514c1..ca774ed 100644
--- a/libs/input/GP_InputDriverLinux.c
+++ b/libs/input/GP_InputDriverLinux.c
@@ -32,7 +32,7 @@
#include "GP_Event.h"
#include "GP_InputDriverLinux.h"
-int get_version(int fd)
+static int get_version(int fd)
{
int ver;
@@ -48,7 +48,7 @@ int get_version(int fd)
/*
* Returns size on success just as read()
*/
-int get_name(int fd, char *buf, size_t buf_len)
+static int get_name(int fd, char *buf, size_t buf_len)
{
int ret;
@@ -58,7 +58,7 @@ int get_name(int fd, char *buf, size_t buf_len)
return ret;
}
-void print_name(int fd)
+static void print_name(int fd)
{
char name[64];
@@ -69,7 +69,7 @@ void print_name(int fd)
GP_DEBUG(2, "Input device name '%s'", name);
}
-void try_load_callibration(struct GP_InputDriverLinux *self)
+static void try_load_callibration(struct GP_InputDriverLinux *self)
{
long bit = 0;
int abs[5];
diff --git a/libs/loaders/GP_Loader.c b/libs/loaders/GP_Loader.c
index 4966757..1d15ec7 100644
--- a/libs/loaders/GP_Loader.c
+++ b/libs/loaders/GP_Loader.c
@@ -288,7 +288,7 @@ enum GP_ImageFmt {
GP_FMT_PPM,
};
-enum GP_ImageFmt filename_to_fmt(const char *path)
+static enum GP_ImageFmt filename_to_fmt(const char *path)
{
size_t len = strlen(path);
diff --git a/libs/loaders/GP_PPM.c b/libs/loaders/GP_PPM.c
index 04dc472..b739b43 100644
--- a/libs/loaders/GP_PPM.c
+++ b/libs/loaders/GP_PPM.c
@@ -39,8 +39,8 @@
#include "GP_PNM.h"
#include "GP_PPM.h"
-int load_binary_ppm(FILE *f, uint32_t depth __attribute__((unused)),
- GP_Context *res)
+static int load_binary_ppm(FILE *f, uint32_t depth __attribute__((unused)),
+ GP_Context *res)
{
uint32_t x, y;
int r, g, b;
diff --git a/libs/loaders/GP_TmpFile.c b/libs/loaders/GP_TmpFile.c
index 9d4a412..cacbf32 100644
--- a/libs/loaders/GP_TmpFile.c
+++ b/libs/loaders/GP_TmpFile.c
@@ -28,7 +28,7 @@
#include "GP_TmpFile.h"
-const char file_sig[] = {'G', 'F', 'X', 'p', 'r', 'i', 'm'};
+static const char file_sig[] = {'G', 'F', 'X', 'p', 'r', 'i', 'm'};
GP_Context *GP_LoadTmpFile(const char *src_path, GP_ProgressCallback *callback)
{
http://repo.or.cz/w/gfxprim.git/commit/6bc3ae46901a2695b24e89b94cfa7c443d4a…
commit 6bc3ae46901a2695b24e89b94cfa7c443d4a43db
Author: Cyril Hrubis <metan(a)ucw.cz>
Date: Wed Dec 12 00:07:31 2012 +0100
tests: Remove last piece of old testing framework.
diff --git a/tests/common/GP_TestingCore.c b/tests/common/GP_TestingCore.c
deleted file mode 100644
index d6b49a1..0000000
--- a/tests/common/GP_TestingCore.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/*****************************************************************************
- * This file is part of gfxprim library. *
- * *
- * Gfxprim is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU Lesser General Public *
- * License as published by the Free Software Foundation; either *
- * version 2.1 of the License, or (at your option) any later version. *
- * *
- * Gfxprim is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
- * Lesser General Public License for more details. *
- * *
- * You should have received a copy of the GNU Lesser General Public *
- * License along with gfxprim; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, *
- * Boston, MA 02110-1301 USA *
- * *
- * Copyright (C) 2011 Tomas Gavenciak <gavento(a)ucw.cz> *
- * *
- *****************************************************************************/
-
-#include "GP_Common.h"
-#include "GP_Convert.h"
-#include "GP_GetPutPixel.h"
-#include "GP_TestingCore.h"
-#include "GP_TestingRandom.h"
-
-/*
- * TODO: Use a different version for palette types.
- */
-GP_Pixel GP_RandomColor(GP_PixelType type)
-{
- return GP_RGBAToPixel(GP_TestingRandom() % 256, GP_TestingRandom() % 256,
- GP_TestingRandom() % 256, GP_TestingRandom() % 256, type);
-}
-
-void GP_RandomizeRect(GP_Context *context, GP_Coord x, GP_Coord y, GP_Size w, GP_Size h)
-{
- GP_CHECK(context);
- GP_Size i, j;
- for (i = 0; i < w; i++)
- for (j = 0; j < h; j++)
- GP_PutPixel(context, i + x, j + y, GP_RandomColor(context->pixel_type));
-}
-
-/* TODO: Proper equality definition (currently almost ad-hoc */
-int GP_EqualColors(GP_Pixel p1, GP_PixelType t1, GP_Pixel p2, GP_PixelType t2)
-{
- int size1 = GP_PixelTypes[t1].size;
- int size2 = GP_PixelTypes[t2].size;
-
- // Same type
- if (t1 == t2)
- return GP_GET_BITS(0, size1, p1) == GP_GET_BITS(0, size1, p2);
-
- // t1 -> RGBA8888 -> t2
- GP_Pixel conv1 = GP_RGBA8888ToPixel(GP_PixelToRGBA8888(p1, t1), t2);
- if (GP_GET_BITS(0, size2, conv1) == GP_GET_BITS(0, size2, p2))
- return 1;
-
- // t2 -> RGBA8888 -> t1
- GP_Pixel conv2 = GP_RGBA8888ToPixel(GP_PixelToRGBA8888(p2, t2), t1);
- if (GP_GET_BITS(0, size1, conv2) == GP_GET_BITS(0, size1, p1))
- return 1;
-
- return 0;
-}
-
-int GP_EqualRects(const GP_Context *c1, GP_Coord x1, GP_Coord y1, GP_Size w, GP_Size h,
- const GP_Context *c2, GP_Coord x2, GP_Coord y2)
-{
- GP_CHECK(c1);
- GP_CHECK(c2);
- GP_Size i, j;
- for (i = 0; i < w; i++)
- for (j = 0; j < h; j++) {
- if (!GP_EqualColors(GP_GetPixel(c1, x1 + i, y1 + j), c1->pixel_type,
- GP_GetPixel(c2, x2 + i, y2 + j), c2->pixel_type))
- return 0;
- }
- return 1;
-}
diff --git a/tests/common/GP_TestingCore.h b/tests/common/GP_TestingCore.h
deleted file mode 100644
index 31d2d1f..0000000
--- a/tests/common/GP_TestingCore.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*****************************************************************************
- * This file is part of gfxprim library. *
- * *
- * Gfxprim is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU Lesser General Public *
- * License as published by the Free Software Foundation; either *
- * version 2.1 of the License, or (at your option) any later version. *
- * *
- * Gfxprim is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
- * Lesser General Public License for more details. *
- * *
- * You should have received a copy of the GNU Lesser General Public *
- * License along with gfxprim; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, *
- * Boston, MA 02110-1301 USA *
- * *
- * Copyright (C) 2011 Tomas Gavenciak <gavento(a)ucw.cz> *
- * *
- *****************************************************************************/
-
-#ifndef CORE_GP_TESTINGCORE_H
-#define CORE_GP_TESTINGCORE_H
-
-#include "GP_Context.h"
-#include "GP_Pixel.h"
-
-/*
- * Return pixel value of random color of given type.
- * Uses GP_TestingRandom and is not really efficient.
- */
-GP_Pixel GP_RandomColor(GP_PixelType type);
-
-/*
- * Set color of pixels in given bitap rectangle to random values.
- * Uses GP_TestingRandom and is not really efficient.
- */
-void GP_RandomizeRect(GP_Context *context, GP_Coord x, GP_Coord y, GP_Size w, GP_Size h);
-
-/*
- * Return true if the two colors are equal after conversion to RGBA8888.
- * Not very efficient.
- */
-int GP_EqualColors(GP_Pixel p1, GP_PixelType t1, GP_Pixel p2, GP_PixelType t2);
-
-/*
- * Macro version with GP_CHECK
- */
-#define GP_CHECK_EqualColors(p1, t1, p2, t2) do { - if (!GP_EqualColors(p1, t1, p2, t2)) { - char b1[256], b2[256]; - GP_PixelSNPrint(b1, 256, p1, t1); - GP_PixelSNPrint(b2, 256, p2, t2); - GP_ABORT("Pixels %s and %s are not the same color.", b1, b2); - } } while (0);
-
-/*
- * Compare two rectangles in two contexts. Return 1 on equal.
- * The colors are cmpared by first converting them to RGBA8888.
- * Somewhat inefficient.
- */
-int GP_EqualRects(const GP_Context *c1, GP_Coord x1, GP_Coord y1, GP_Size w, GP_Size h,
- const GP_Context *c2, GP_Coord x2, GP_Coord y2);
-
-#endif /* CORE_GP_TESTINGCORE_H */
-----------------------------------------------------------------------
Summary of changes:
build/check_symbols.sh | 15 +-
build/libGP_expected_symbols.txt | 536 --------------------------------------
build/syms/Core_symbols.txt | 66 +++++
build/syms/Event_symbols.txt | 19 ++
build/syms/Filters_symbols.txt | 179 +++++++++++++
build/syms/GFX_symbols.txt | 114 ++++++++
build/syms/Loaders_symbols.txt | 75 ++++++
build/syms/Text_symbols.txt | 19 ++
libs/core/GP_Blit.gen.c.t | 4 +-
libs/input/GP_InputDriverLinux.c | 8 +-
libs/loaders/GP_Loader.c | 2 +-
libs/loaders/GP_PPM.c | 4 +-
libs/loaders/GP_TmpFile.c | 2 +-
tests/common/GP_TestingCore.c | 83 ------
tests/common/GP_TestingCore.h | 66 -----
15 files changed, 490 insertions(+), 702 deletions(-)
delete mode 100644 build/libGP_expected_symbols.txt
create mode 100644 build/syms/Core_symbols.txt
create mode 100644 build/syms/Event_symbols.txt
create mode 100644 build/syms/Filters_symbols.txt
create mode 100644 build/syms/GFX_symbols.txt
create mode 100644 build/syms/Loaders_symbols.txt
create mode 100644 build/syms/Text_symbols.txt
delete mode 100644 tests/common/GP_TestingCore.c
delete mode 100644 tests/common/GP_TestingCore.h
repo.or.cz automatic notification. Contact project admin jiri.bluebear.dluhos(a)gmail.com
if you want to unsubscribe, or site admin admin(a)repo.or.cz if you receive
no reply.
--
gfxprim.git ("A simple 2D graphics library with emphasis on correctness and well-defined operation.")
1
0
[repo.or.cz] gfxprim.git branch master updated: 6ab18e99fea64799e1d887ba90b08a6cdec016df
by metan 11 Dec '12
by metan 11 Dec '12
11 Dec '12
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project gfxprim.git.
The branch, master has been updated
via 6ab18e99fea64799e1d887ba90b08a6cdec016df (commit)
from 86d973b47abbc97b301abcee265a2537cbc3784e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://repo.or.cz/w/gfxprim.git/commit/6ab18e99fea64799e1d887ba90b08a6cdec0…
commit 6ab18e99fea64799e1d887ba90b08a6cdec016df
Author: Cyril Hrubis <metan(a)ucw.cz>
Date: Tue Dec 11 22:58:04 2012 +0100
build: Add crude test for unexpectedly exported symbols.
diff --git a/build/check_symbols.sh b/build/check_symbols.sh
new file mode 100755
index 0000000..d21076c
--- /dev/null
+++ b/build/check_symbols.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# Purpose of this script is to check library exported symbols
+#
+
+SYMBOLFILE=libGP_symbols.txt
+
+function grep_sym
+{
+ if objdump --syms "$1" |grep "$2" 2>&1 > /dev/null; then
+ echo "SYM: $2 : $1"
+ fi
+}
+
+function find_symbol
+{
+ find ../libs/ -name '*.o' | while read obj; do grep_sym "$obj" "$1"; done
+}
+
+objdump --dynamic-syms libGP.so | awk 'NR > 4 { print }' | awk '$3 != "*UND*"' | awk '{print $NF}' > $SYMBOLFILE
+
+#
+# Remove a few known symbols
+#
+sed -i '/.init/d' $SYMBOLFILE
+sed -i '/_init/d' $SYMBOLFILE
+sed -i '/_end/d' $SYMBOLFILE
+sed -i '/_fini/d' $SYMBOLFILE
+
+for i in `cat libGP_symbols.txt`; do
+ if ! grep "$i" libGP_expected_symbols.txt 2>&1 > /dev/null; then
+ find_symbol "$i"
+ fi
+done
+
+rm libGP_symbols.txt
diff --git a/build/libGP_expected_symbols.txt b/build/libGP_expected_symbols.txt
new file mode 100644
index 0000000..0d9d566
--- /dev/null
+++ b/build/libGP_expected_symbols.txt
@@ -0,0 +1,536 @@
+GP_Line_Raw
+GP_WritePixels2bpp
+GP_FilterParamCheckPixelType
+GP_FillEllipse_Raw_2BPP_LE
+GP_FilterFloydSteinberg_RGB888_to_RGB565_Raw
+GP_FillTetragon
+GP_MatchPSP
+GP_FilterAddition_Raw
+GP_PartialEllipse_Raw_2BPP_BE
+GP_FillSymbol
+GP_ArcSegment_Raw_2BPP_BE
+GP_Circle_Raw_2BPP_BE
+GP_FilterLaplace
+GP_FilterHLinearConvolution_Raw
+GP_LoadImage
+GP_WritePixels1bpp
+GP_PixelSNPrint_RGB888
+GP_BlitXYXY
+GP_FillTriangle
+GP_OpenJPG
+GP_FillTriangle_Raw
+GP_BlitXYXY_Fast
+GP_FilterInvert_Raw
+GP_PutPixel
+GP_Line_Raw_4BPP_LE
+GP_Ellipse_Raw_8BPP
+GP_FillCircle_Raw_4BPP_LE
+GP_FilterRotate270_Raw_24BPP
+GP_FilterConvolutionExAlloc
+GP_FilterFloydSteinberg_RGB888_to_xRGB7333_Raw
+GP_FillRing_Raw
+GP_FilterParamSetFloatAll
+GP_FilterRotate90_Raw_2BPP_BE
+GP_LoadGIF
+GP_FilterSymmetry
+GP_MetaDataCreateRat
+GP_FilterSymmetry_Alloc
+GP_FilterNoise
+GP_HLineXYW_Raw
+GP_FillEllipse_Raw_32BPP
+GP_FilterRotate90_Raw_8BPP
+GP_MetaDataCreateInt
+GP_Line_Raw_2BPP_BE
+GP_ArcSegment_Raw_24BPP
+GP_FillCircle_Raw
+GP_PixelRGBLookup
+GP_FilterParamSetIntAll
+GP_VLine_18BPP_LE
+GP_FilterBrightness
+GP_VLine_8BPP
+GP_FilterHilbertPeano_RGB888_to_G8_Raw
+GP_CircleSeg_Raw_4BPP_BE
+GP_Line_Raw_32BPP
+GP_Circle_Raw_18BPP_LE
+GP_FillEllipse_Raw_1BPP_BE
+GP_LineAA
+GP_FilterParamSetUIntAll
+GP_ReadGIF
+GP_FilterLaplaceAlloc
+GP_NormInt
+GP_PartialEllipse_Raw_16BPP
+GP_SavePBM
+GP_Symbol
+GP_ContextResize
+GP_EventKeyName
+GP_WritePixels18bpp
+GP_FilterFloydSteinberg_RGB888_to_G8_Raw
+GP_FillRectXYXY_Raw
+GP_FontFaceLoad
+GP_HLine_Raw_32BPP
+GP_Text_Raw
+GP_FillRectXYWH_Raw
+GP_Circle_Raw_24BPP
+GP_CircleSeg_Raw_1BPP_LE
+GP_EventPushAbs
+GP_MirrorV_Raw_4BPP_BE
+GP_Linear10_Gamma8
+GP_HLine_Raw_8BPP
+GP_FilterHilbertPeano_RGB888_to_RGB666_Raw
+GP_FilterHilbertPeano_RGB888_to_G4_Raw
+GP_LoaderRegister
+GP_FilterResizeNN
+GP_OpenBMP
+GP_SaveImage
+GP_FilterRotate90_Raw_32BPP
+GP_VLineAA
+GP_FillRing_Raw_2BPP_LE
+GP_FilterFloydSteinberg_RGB888_to_G4_Raw
+GP_WritePixels16bpp
+GP_FilterResizeCubicInt
+GP_MetaDataCreateRecord
+GP_MirrorV_Raw_1BPP_LE
+GP_EventSetScreenSize
+GP_FilterMirrorV_Raw
+GP_FilterConvolutionMP_Raw
+GP_FilterContrast
+GP_FilterFloydSteinberg_RGB888_to_RGB888_Raw
+GP_Ellipse_Raw_24BPP
+GP_PixelSNPrint_xRGB14666
+GP_RectXYWH
+GP_ListLoaders
+GP_HLineAA
+GP_VLine_4BPP_BE
+GP_FilterHilbertPeano_RGB888_to_xRGB14666_Raw
+GP_FilterParamDestroy
+GP_PixelSNPrint_P2
+GP_FillRing_Raw_8BPP
+GP_PixelSNPrint_P4
+GP_PixelSNPrint_P8
+GP_LoadPNG
+GP_FillSymbol_Raw
+GP_FillEllipse_Raw_8BPP
+GP_GetGlyphCount
+GP_PartialEllipse_Raw_4BPP_LE
+GP_VLine_1BPP_LE
+GP_FillCircle_Raw_16BPP
+GP_FilterGaussianBlurEx
+GP_CircleSeg_Raw_16BPP
+GP_MetaDataGetInt
+GP_FilterHilbertPeano_RGB888_to_BGR888_Raw
+GP_TextAscent
+GP_EventPushKey
+GP_ReadPNG
+GP_NormalizeAngle
+GP_FilterParamCheckChannels
+GP_PartialEllipse_Raw_18BPP_LE
+GP_CircleSeg_Raw_8BPP
+GP_HLine_Raw_4BPP_BE
+GP_FillRing_Raw_1BPP_BE
+GP_FilterRotate180_Raw
+GP_Ellipse_Raw_4BPP_BE
+GP_ReadJPGMetaData
+GP_FilterEdgeSobel
+GP_VLine_24BPP
+GP_FilterHilbertPeano_RGB888
+GP_ReadPNM
+GP_EventGet
+GP_FilterParamPrintInt
+GP_FilterFloydSteinberg_RGB888_to_xRGB2222_Raw
+GP_FilterMirrorV_Alloc
+GP_FilterRotate90_Raw_4BPP_LE
+GP_WritePixels_1BPP_LE
+GP_DefaultConsoleFont
+GP_FilterParamPrintPtr
+GP_FilterMultiply_Raw
+GP_PartialEllipse
+GP_FillEllipse_Raw_18BPP_LE
+GP_VLine_2BPP_LE
+GP_FilterLinearConvolution_Raw
+GP_FilterRotate270_Raw_4BPP_BE
+GP_FillRing_Raw_32BPP
+GP_MirrorV_Raw_16BPP
+GP_HLine_Raw_1BPP_LE
+GP_MatchJPG
+GP_ContextConvertAlloc
+GP_FilterPoint
+GP_Ellipse_Raw_1BPP_LE
+GP_RectXYXY
+GP_FilterKernelPrint_Raw
+GP_InputDriverLinuxRead
+GP_PixelToRGB888
+GP_PXMSave8bpp
+GP_DebugPrint
+GP_TextMaxStrWidth
+GP_FilterRotate90_Raw_18BPP_LE
+GP_FilterPoint_Raw
+GP_FillCircle_Raw_8BPP
+GP_FilterRotate270_Raw_1BPP_LE
+GP_FillRectXYXY_AA
+GP_FilterFloydSteinberg_RGB888_to_RGB666_Raw
+GP_WritePNM
+GP_FilterVHLinearConvolution_Raw
+GP_InputDriverSDLEventPut
+GP_SaveTmpFile
+GP_OpenGIF
+GP_FillPolygon_Raw
+GP_FilterAdditionAlloc
+GP_ArcSegment
+GP_FilterInterpolate_Cubic
+GP_LoadPPM
+GP_FilterHistogramAlloc
+GP_ColorToPixel
+GP_FilterHistogram
+GP_FilterRotate270_Raw_32BPP
+GP_ArcSegment_Raw_4BPP_BE
+GP_Circle_Raw_4BPP_BE
+GP_Triangle_Raw
+GP_MetaDataClear
+GP_EventQueued
+GP_VLineXYH_Raw
+GP_Circle
+GP_ColorNameToPixel
+GP_VLineXYH
+GP_ColorLoadPixels
+GP_NrThreads
+GP_ArcSegment_Raw_32BPP
+GP_FillEllipse_Raw_2BPP_BE
+GP_MatchBMP
+GP_ArcSegment_Raw_8BPP
+GP_RGBA8888ToPixel
+GP_Circle_Raw_1BPP_LE
+GP_ArcSegment_Raw_1BPP_LE
+GP_FilterMax
+GP_FilterVConvolutionMP_Raw
+GP_FilterNoise_Raw
+GP_PartialEllipse_Raw_24BPP
+GP_FillRectXYXY_AA_Raw
+GP_VLineXYY
+GP_FilterFloydSteinberg_RGB888_to_BGR888_Raw
+GP_CircleSeg_Raw_2BPP_LE
+GP_MetaDataFromExif
+GP_Circle_Raw_32BPP
+GP_SubContextAlloc
+GP_Line_Raw_4BPP_BE
+GP_ContextRotateCW
+GP_FilterHilbertPeano_RGB888_Raw
+GP_FilterInterpolate_LinearLFInt
+GP_FillPolygon
+GP_FilterHilbertPeano_RGB888_to_G1_Raw
+GP_FillCircle_Raw_4BPP_BE
+GP_FilterRotate90_Raw_1BPP_LE
+GP_FilterRotate270_Alloc
+GP_SavePGM
+GP_PXMSave2bpp
+GP_NrThreadsSet
+GP_PixelSNPrint_VA12
+GP_FilterGaussianNoiseAddEx
+GP_MetaDataGetDouble
+GP_FilterFloydSteinberg_RGB888_to_G1_Raw
+GP_InputDriverKBDEventPut
+GP_MirrorV_Raw_2BPP_LE
+GP_RectXYXY_Raw
+GP_VLineXYY_Raw
+GP_SaveJPG
+GP_ContextCopy
+GP_Ellipse_Raw
+GP_RectXYWH_Raw
+GP_Line_Raw_1BPP_LE
+GP_WritePixels24bpp
+GP_PixelRGBMatch
+GP_PXMSave1bpp
+GP_LoadPBM
+GP_OpenPNG
+GP_FillCircle_Raw_1BPP_LE
+GP_FillRectXYWH_AA
+GP_FilterEdgePrewitt
+GP_Ellipse_Raw_32BPP
+GP_FilterParamSetFloat
+GP_PixelTypeByName
+GP_LoadJPGMetaData
+GP_FilterRotate90_Raw
+GP_RGB888ToPixel
+GP_Line_Raw_18BPP_LE
+GP_Polygon
+GP_MatchSignature
+GP_FilterSymmetryNames
+GP_FillRing_Raw_4BPP_LE
+GP_FilterSymmetryByName
+GP_HLine_Raw_18BPP_LE
+GP_Ring
+GP_FilterParamCreate
+GP_Gamma8_Linear10
+GP_CircleSeg_Raw_1BPP_BE
+GP_HLineAA_Raw
+GP_FillCircle
+GP_ContextRotateCCW
+GP_FillCircle_Raw_24BPP
+GP_FillRectXYWH
+GP_FillCircle_Raw_2BPP_LE
+GP_Circle_Raw_8BPP
+GP_FilterMirrorH_Alloc
+GP_InputDriverLinuxClose
+GP_CircleSeg_Raw_24BPP
+GP_FillEllipse_Raw_16BPP
+GP_ProgressCallbackMP
+GP_FilterHilbertPeano_RGB888_to_xRGB8888_Raw
+GP_CircleSeg
+GP_FillRing_Raw_2BPP_BE
+GP_BlitXYXY_Raw
+GP_FilterDifferenceAlloc
+GP_BlitXYWH_Raw
+GP_MetaDataPrint
+GP_Line_Raw_16BPP
+GP_MirrorV_Raw_1BPP_BE
+GP_WritePixels_2BPP_LE
+GP_VLine_32BPP
+GP_GammaRelease
+GP_FilterWeightedMedianExAlloc
+GP_InputDriverX11EventPut
+GP_LoadPSP
+GP_MetaDataCreate
+GP_GetDebugLevel
+GP_FilterEdgeSharpeningAlloc
+GP_MetaDataCreateString
+GP_HLine_Raw_2BPP_LE
+GP_FilterMinAlloc
+GP_Ellipse_Raw_2BPP_LE
+GP_HLine_Raw_16BPP
+GP_MirrorV_Raw_24BPP
+GP_MatchGIF
+GP_FilterWeightedMedianEx
+GP_BlitXYXY_Raw_Fast
+GP_FillEllipse_Raw_4BPP_LE
+GP_FillCircle_Raw_18BPP_LE
+GP_BlitXYXY_Clipped
+GP_FilterRotate90_Alloc
+GP_ReadPSP
+GP_FilterRotate270_Raw_2BPP_LE
+GP_FilterInterpolate_LinearInt
+GP_ReadPNGMetaData
+GP_TextClearStr
+GP_PartialEllipse_Raw_4BPP_BE
+GP_LineAA_Raw
+GP_EventSetScreenCursor
+GP_VLine_1BPP_BE
+GP_FilterRotate90_Raw_16BPP
+GP_FilterSigmaEx
+GP_ContextPrintInfo
+GP_FilterGaussianNoiseAdd_Raw
+GP_FillTetragon_Raw
+GP_MirrorV_Raw_18BPP_LE
+GP_ColorToColorName
+GP_InterpolationTypeName
+GP_ArcSegment_Raw
+GP_FillRectXYXY
+GP_FilterRotate270_Raw
+GP_FillRing_Raw_18BPP_LE
+GP_PartialEllipse_Raw_1BPP_LE
+GP_EventPushRelTo
+GP_GammaAcquire
+GP_FilterMultiplyAlloc
+GP_Circle_Raw
+GP_InputDriverLinuxOpen
+GP_FilterParamSetUInt
+GP_PixelSNPrint_G1
+GP_PutPixelAA_Raw_Clipped
+GP_PixelSNPrint_G2
+GP_FilterHilbertPeano_RGB888_to_RGB565_Raw
+GP_FilterRotate90_Raw_4BPP_BE
+GP_PixelSNPrint_G4
+GP_PXMLoad8bpp
+GP_PixelSNPrint_RGBA8888
+GP_Line
+GP_PixelSNPrint_G8
+GP_PixelSNPrint_RGB565
+GP_VLine_2BPP_BE
+GP_FilterContrast_Raw
+GP_HLine_Raw_1BPP_BE
+GP_EventPushResize
+GP_Ellipse_Raw_1BPP_BE
+GP_ContextConvert
+GP_HLineXXY_Raw
+GP_GetPixel
+GP_LoadMetaData
+GP_FilterMultiply
+GP_FilterFloydSteinberg_RGB888_to_xRGB8888_Raw
+GP_PartialEllipse_Raw_2BPP_LE
+GP_Circle_Raw_2BPP_LE
+GP_FilterDifference_Raw
+GP_FilterHilbertPeano_RGB888_to_G2_Raw
+GP_ArcSegment_Raw_2BPP_LE
+GP_FilterRotate270_Raw_1BPP_BE
+GP_FilterRotate270_Raw_8BPP
+GP_ColorNameToColor
+GP_LoadTmpFile
+GP_FilterFloydSteinberg_RGB888_to_G2_Raw
+GP_PartialEllipse_Raw_32BPP
+GP_EventDump
+GP_SetDebugLevel
+SWIG_exception
+GP_DefaultStyle
+GP_MatchPNG
+GP_FilterParamChannel
+GP_PixelTypes
+GP_FillRing_Raw_16BPP
+GP_Tetragon
+GP_FilterHilbertPeano_RGB888_to_xRGB7333_Raw
+GP_FilterResize_Raw
+GP_FilterRotate90_Raw_2BPP_LE
+GP_SubContext
+GP_Triangle
+GP_GammaCopy
+GP_FilterHistogram_Raw
+GP_PXMLoad4bpp
+GP_FillEllipse
+GP_FilterGaussianBlurExAlloc
+GP_Line_Raw_2BPP_LE
+GP_FilterInvert
+GP_PixelSNPrint_RGB666
+GP_Symbol_Raw
+GP_FilterResize
+GP_CircleSeg_Raw_4BPP_LE
+GP_WritePixels32bpp
+GP_FillEllipse_Raw_1BPP_LE
+GP_FillRectXYWH_AA_Raw
+GP_Text
+GP_Line_Raw_8BPP
+GP_FilterRotate180_Alloc
+GP_Circle_Raw_1BPP_BE
+GP_ArcSegment_Raw_1BPP_BE
+GP_PixelSNPrint_xRGB8888
+GP_MetaDataCreateDouble
+GP_FilterFloydSteinberg_RGB888_to_xRGB14666_Raw
+GP_PixelToRGBA8888
+GP_FilterParamChannels
+GP_MetaDataDestroy
+GP_FilterSigmaExAlloc
+GP_ContextInit
+GP_FilterFloydSteinberg_RGB888_Alloc
+GP_PXMLoad2bpp
+GP_FillEllipse_Raw
+GP_FillRing
+GP_TextDescent
+GP_EventPush
+GP_MirrorV_Raw_4BPP_LE
+GP_LoadPGM
+GP_CircleSeg_Raw_2BPP_BE
+GP_FilterRotate270_Raw_16BPP
+GP_FilterRotate180
+GP_Ellipse
+GP_FilterVLinearConvolution_Raw
+GP_OpenPSP
+GP_LoadJPG
+GP_PXMLoad1bpp
+GP_MirrorV_Raw_8BPP
+GP_FontFaceFree
+GP_FillCircle_Raw_32BPP
+GP_FilterMin_Raw
+GP_FilterRotate90_Raw_1BPP_BE
+GP_CircleSeg_Raw_32BPP
+GP_LoadPNGMetaData
+GP_FillEllipse_Raw_24BPP
+GP_FilterRotate270
+GP_PartialEllipse_Raw_8BPP
+GP_ArcSegment_Raw_16BPP
+GP_MirrorV_Raw_2BPP_BE
+GP_FilterMirrorH_Raw
+GP_Line_Raw_1BPP_BE
+GP_CircleSeg_Raw
+GP_Line_Raw_24BPP
+GP_VLine_4BPP_LE
+GP_FillCircle_Raw_1BPP_BE
+GP_ReadJPG
+GP_Print
+GP_FilterHilbertPeano_RGB888_Alloc
+GP_FilterDifference
+GP_DefaultProportionalFont
+GP_FilterBrightness_Raw
+GP_HLine_Raw_24BPP
+GP_Circle_Raw_16BPP
+GP_FilterRotate270_Raw_18BPP_LE
+GP_EventPushRel
+GP_MirrorV_Raw_32BPP
+GP_FilterFloydSteinberg_RGB888_Raw
+GP_FilterHConvolutionMP_Raw
+GP_TextWidth
+GP_FilterParamFreePtrAll
+GP_FilterParamPrintUInt
+GP_FillRing_Raw_4BPP_BE
+GP_FilterMax_Raw
+GP_ArcSegment_Raw_18BPP_LE
+GP_SavePNG
+GP_WritePixels_4BPP_LE
+GP_HLineXXY
+GP_FilterResizeNN_Raw
+GP_FilterRotate90_Raw_24BPP
+GP_DefaultTextStyle
+GP_WritePixels8bpp
+GP_FillCircle_Raw_2BPP_BE
+GP_CubicTable
+GP_HLine_Raw_4BPP_LE
+GP_FilterMin
+GP_FilterAddition
+GP_GetGlyphBitmap
+GP_Ellipse_Raw_18BPP_LE
+GP_Ellipse_Raw_4BPP_LE
+GP_FillRing_Raw_1BPP_LE
+GP_FilterGaussianBlur_Raw
+GP_PutPixelAA_Raw
+GP_TextClear
+GP_FilterHilbertPeano_RGB888_to_xRGB2222_Raw
+GP_LoadBMP
+GP_Ellipse_Raw_16BPP
+GP_PutPixelAA
+GP_FilterRotate270_Raw_4BPP_LE
+GP_CircleSeg_Raw_18BPP_LE
+GP_BlitXYWH_Clipped
+GP_FilterMedianEx
+GP_Tetragon_Raw
+GP_PartialEllipse_Raw
+GP_ContextFree
+GP_FilterResizeNNAlloc
+GP_HLine_Raw_2BPP_BE
+GP_Ellipse_Raw_2BPP_BE
+GP_FilterMirrorH
+GP_HLineXYW
+GP_LoaderUnregister
+GP_VLineAA_Raw
+GP_ReadBMP
+GP_FilterGaussianNoiseAddExAlloc
+GP_FillEllipse_Raw_4BPP_BE
+GP_FilterResizeCubicInt_Raw
+GP_TextMaxWidth
+GP_FilterRotate270_Raw_2BPP_BE
+GP_BlitXYWH
+GP_FilterMirrorV
+GP_PixelAddrOffset
+GP_PixelSNPrint_xRGB2222
+GP_FilterMaxAlloc
+GP_VLine_16BPP
+GP_FilterMedianExAlloc
+GP_TextHeight
+GP_FilterParamInitChannels
+GP_WritePixels4bpp
+GP_Ring_Raw
+GP_FilterEdgeSharpening
+GP_FilterParamSetInt
+GP_FilterResizeCubicIntAlloc
+GP_AngleInRange
+GP_PartialEllipse_Raw_1BPP_BE
+GP_FilterConvolutionEx
+GP_FilterParamSetPtr
+GP_FillRing_Raw_24BPP
+GP_FilterRotate90
+GP_FilterParamPrintFloat
+GP_PixelSNPrint_BGR888
+GP_FilterFloydSteinberg_RGB888
+GP_Circle_Raw_4BPP_LE
+GP_ArcSegment_Raw_4BPP_LE
+GP_SavePPM
+GP_PixelSNPrint_xRGB7333
+GP_Polygon_Raw
+GP_FilterParamSetPtrAll
+GP_MetaDataGetString
+GP_ContextAlloc
+GP_FilterHilbertPeano_RGB888_to_RGB888_Raw
-----------------------------------------------------------------------
Summary of changes:
build/check_symbols.sh | 36 +++
build/libGP_expected_symbols.txt | 536 ++++++++++++++++++++++++++++++++++++++
2 files changed, 572 insertions(+), 0 deletions(-)
create mode 100755 build/check_symbols.sh
create mode 100644 build/libGP_expected_symbols.txt
repo.or.cz automatic notification. Contact project admin jiri.bluebear.dluhos(a)gmail.com
if you want to unsubscribe, or site admin admin(a)repo.or.cz if you receive
no reply.
--
gfxprim.git ("A simple 2D graphics library with emphasis on correctness and well-defined operation.")
1
0
[repo.or.cz] gfxprim.git branch master updated: 86d973b47abbc97b301abcee265a2537cbc3784e
by metan 10 Dec '12
by metan 10 Dec '12
10 Dec '12
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project gfxprim.git.
The branch, master has been updated
via 86d973b47abbc97b301abcee265a2537cbc3784e (commit)
via 17b4abe983a4218ffa1a17f467c7b3845d1b9be8 (commit)
from d9723b14b7ba7dd2eaef8f09fbd3823a25078b94 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://repo.or.cz/w/gfxprim.git/commit/86d973b47abbc97b301abcee265a2537cbc3…
commit 86d973b47abbc97b301abcee265a2537cbc3784e
Author: Cyril Hrubis <metan(a)ucw.cz>
Date: Mon Dec 10 23:01:40 2012 +0100
backends: GP_X11.c: Finish SHM & Fix Race.
This commit finishes the MIT SHM Extension
and enables it by default.
Also this commit fixes race between
X{Shm}Image resize and UpdateRect
Event that was there since begining
but the SHM inteface started to trigger it.
diff --git a/libs/backends/GP_X11.c b/libs/backends/GP_X11.c
index d4030b8..d02b244 100644
--- a/libs/backends/GP_X11.c
+++ b/libs/backends/GP_X11.c
@@ -67,6 +67,7 @@ static void destroy_ximage(GP_Backend *self);
static void destroy_shm_ximage(GP_Backend *self);
static int resize_ximage(GP_Backend *self, int w, int h);
+static int resize_shm_ximage(GP_Backend *self, int w, int h);
static void x11_exit(GP_Backend *self)
{
@@ -107,8 +108,6 @@ static void x11_update_rect(GP_Backend *self, GP_Coord x0, GP_Coord y0,
XFlush(x11->dpy);
- x11->resized_flag = 0;
-
XUnlockDisplay(x11->dpy);
}
@@ -126,8 +125,6 @@ static void x11_flip(GP_Backend *self)
x11->img, 0, 0, 0, 0, w, h);
XFlush(x11->dpy);
- x11->resized_flag = 0;
-
XUnlockDisplay(x11->dpy);
}
@@ -141,7 +138,11 @@ static void x11_ev(GP_Backend *self, XEvent *ev)
ev->xexpose.x, ev->xexpose.y,
ev->xexpose.width, ev->xexpose.height,
ev->xexpose.count);
-
+
+ /*
+ * Ignore Expose events in case user wasn't notified
+ * about change and acked image resize.
+ */
if (x11->resized_flag)
break;
@@ -153,6 +154,11 @@ static void x11_ev(GP_Backend *self, XEvent *ev)
if (ev->xconfigure.width == (int)self->context->w &&
ev->xconfigure.height == (int)self->context->h)
break;
+
+ /*
+ * Window has been resized, set flag.
+ */
+ x11->resized_flag = 1;
default:
GP_InputDriverX11EventPut(ev);
break;
@@ -204,14 +210,19 @@ static int x11_set_attributes(struct GP_Backend *self,
if (w != 0 && h != 0) {
GP_DEBUG(3, "Setting window size to %ux%u", w, h);
- if (resize_ximage(self, w, h))
- return 1;
+ if (x11->shm_flag) {
+ if (resize_shm_ximage(self, w, h))
+ return 1;
+ } else {
+ if (resize_ximage(self, w, h))
+ return 1;
+ }
/* Resize X11 window */
// XResizeWindow(x11->dpy, x11->win, w, h);
XFlush(x11->dpy);
- x11->resized_flag = 1;
+ x11->resized_flag = 0;
}
XUnlockDisplay(x11->dpy);
@@ -244,11 +255,13 @@ static int create_shm_ximage(GP_Backend *self, GP_Size w, GP_Size h)
struct x11_priv *x11 = GP_BACKEND_PRIV(self);
if (XShmQueryExtension(x11->dpy) == False) {
- GP_DEBUG(1, "X Shm Extension not supported, "
- "falling back to XImagen");
+ GP_DEBUG(1, "MIT SHM Extension not supported, "
+ "falling back to XImage");
return 1;
}
-
+
+ GP_DEBUG(1, "Using MIT SHM Extension");
+
enum GP_PixelType pixel_type;
int depth;
@@ -312,11 +325,22 @@ static void destroy_shm_ximage(GP_Backend *self)
struct x11_priv *x11 = GP_BACKEND_PRIV(self);
XShmDetach(x11->dpy, &x11->shminfo);
+ XFlush(x11->dpy);
shmdt(x11->shminfo.shmaddr);
shmctl(x11->shminfo.shmid, IPC_RMID, 0);
XDestroyImage(x11->img);
}
+static int resize_shm_ximage(GP_Backend *self, int w, int h)
+{
+ GP_DEBUG(4, "Resizing XShmImage %ux%u -> %ux%u",
+ self->context->w, self->context->h, w, h);
+
+ destroy_shm_ximage(self);
+
+ return create_shm_ximage(self, w, h);
+}
+
#else
static int create_shm_ximage(GP_Backend GP_UNUSED(*self),
@@ -330,6 +354,12 @@ static void destroy_shm_ximage(GP_Backend GP_UNUSED(*self))
GP_WARN("Stub called");
}
+static int resize_shm_ximage(GP_Backend GP_UNUSED(*self),
+ int GP_UNUSED(w), int GP_UNUSED(h))
+{
+ GP_WARN("Stub called");
+}
+
#endif /* HAVE_X_SHM */
static int create_ximage(GP_Backend *self, GP_Size w, GP_Size h)
@@ -381,11 +411,6 @@ static int resize_ximage(GP_Backend *self, int w, int h)
struct x11_priv *x11 = GP_BACKEND_PRIV(self);
XImage *img;
- if (x11->shm_flag) {
- GP_WARN("UNIMPLEMENTED");
- return 1;
- }
-
/* Create new X image */
img = XCreateImage(x11->dpy, x11->vis, x11->scr_depth, ZPixmap, 0, NULL,
w, h, x11->img->bitmap_pad, 0);
@@ -593,7 +618,7 @@ void create_window(struct x11_priv *x11, int x, int y,
Atom xa = XInternAtom(x11->dpy, "WM_DELETE_WINDOW", True);
if (xa != None) {
- GP_DEBUG(2, "Setting WM_DELETE_WINWOW Atom to True");
+ GP_DEBUG(2, "Setting WM_DELETE_WINDOW Atom to True");
XSetWMProtocols(x11->dpy, x11->win, &xa, 1);
} else {
@@ -647,7 +672,7 @@ GP_Backend *GP_BackendX11Init(const char *display, int x, int y,
goto err1;
}
- //if (create_shm_ximage(backend, w, h))
+ if (create_shm_ximage(backend, w, h))
if (create_ximage(backend, w, h))
goto err1;
http://repo.or.cz/w/gfxprim.git/commit/17b4abe983a4218ffa1a17f467c7b3845d1b…
commit 17b4abe983a4218ffa1a17f467c7b3845d1b9be8
Author: Cyril Hrubis <metan(a)ucw.cz>
Date: Mon Dec 10 23:01:05 2012 +0100
backends: GP_Backend.c: Add WARNINGS into UpdateRect()
diff --git a/libs/backends/GP_Backend.c b/libs/backends/GP_Backend.c
index 036fd56..b81808e 100644
--- a/libs/backends/GP_Backend.c
+++ b/libs/backends/GP_Backend.c
@@ -22,6 +22,7 @@
#include "core/GP_Common.h"
#include "core/GP_Transform.h"
+#include "core/GP_Debug.h"
#include "backends/GP_Backend.h"
@@ -38,6 +39,30 @@ void GP_BackendUpdateRectXYXY(GP_Backend *backend,
if (y1 < y0)
GP_SWAP(y0, y1);
+ if (x0 < 0) {
+ GP_WARN("Negative x coordinate %i, clipping to 0", x0);
+ x0 = 0;
+ }
+
+ if (y0 < 0) {
+ GP_WARN("Negative y coordinate %i, clipping to 0", y0);
+ y0 = 0;
+ }
+
+ GP_Coord w = backend->context->w;
+
+ if (x1 >= w) {
+ GP_WARN("Invalid x coordinate %i, clipping to %u", x1, w - 1);
+ x1 = w - 1;
+ }
+
+ GP_Coord h = backend->context->h;
+
+ if (y1 >= h) {
+ GP_WARN("Invalid x coordinate %i, clipping to %u", y1, h - 1);
+ y1 = h - 1;
+ }
+
backend->UpdateRect(backend, x0, y0, x1, y1);
}
-----------------------------------------------------------------------
Summary of changes:
libs/backends/GP_Backend.c | 25 ++++++++++++++++++
libs/backends/GP_X11.c | 61 +++++++++++++++++++++++++++++++-------------
2 files changed, 68 insertions(+), 18 deletions(-)
repo.or.cz automatic notification. Contact project admin jiri.bluebear.dluhos(a)gmail.com
if you want to unsubscribe, or site admin admin(a)repo.or.cz if you receive
no reply.
--
gfxprim.git ("A simple 2D graphics library with emphasis on correctness and well-defined operation.")
1
0
[repo.or.cz] gfxprim.git branch master updated: d9723b14b7ba7dd2eaef8f09fbd3823a25078b94
by metan 10 Dec '12
by metan 10 Dec '12
10 Dec '12
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project gfxprim.git.
The branch, master has been updated
via d9723b14b7ba7dd2eaef8f09fbd3823a25078b94 (commit)
from 790141b6485cbea2f016f1d26f88f372b7dc7bfc (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://repo.or.cz/w/gfxprim.git/commit/d9723b14b7ba7dd2eaef8f09fbd3823a2507…
commit d9723b14b7ba7dd2eaef8f09fbd3823a25078b94
Author: Cyril Hrubis <metan(a)ucw.cz>
Date: Mon Dec 10 21:27:21 2012 +0100
core: GP_Debug.c: Fix code ordering.
The check for GP_DEBUG enviroment variable must
be done before we check for current level.
diff --git a/libs/core/GP_Debug.c b/libs/core/GP_Debug.c
index 9332828..75a54f3 100644
--- a/libs/core/GP_Debug.c
+++ b/libs/core/GP_Debug.c
@@ -42,9 +42,6 @@ void GP_DebugPrint(int level, const char *file, const char *function, int line,
{
int i;
- if (level > (int)debug_level)
- return;
-
if (!env_used) {
char *level = getenv("GP_DEBUG");
@@ -62,6 +59,9 @@ void GP_DebugPrint(int level, const char *file, const char *function, int line,
}
}
}
+
+ if (level > (int)debug_level)
+ return;
for (i = 1; i < level; i++)
fputc(' ', stderr);
-----------------------------------------------------------------------
Summary of changes:
libs/core/GP_Debug.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
repo.or.cz automatic notification. Contact project admin jiri.bluebear.dluhos(a)gmail.com
if you want to unsubscribe, or site admin admin(a)repo.or.cz if you receive
no reply.
--
gfxprim.git ("A simple 2D graphics library with emphasis on correctness and well-defined operation.")
1
0
[repo.or.cz] gfxprim.git branch master updated: 790141b6485cbea2f016f1d26f88f372b7dc7bfc
by bluebear 10 Dec '12
by bluebear 10 Dec '12
10 Dec '12
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project gfxprim.git.
The branch, master has been updated
via 790141b6485cbea2f016f1d26f88f372b7dc7bfc (commit)
from 96f86e4c8dfdbdea1a468aa29130010be8f89e27 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://repo.or.cz/w/gfxprim.git/commit/790141b6485cbea2f016f1d26f88f372b7dc…
commit 790141b6485cbea2f016f1d26f88f372b7dc7bfc
Author: Jiri BlueBear Dluhos <jiri.bluebear.dluhos(a)gmail.com>
Date: Mon Dec 10 17:53:57 2012 +0100
Get rid of one qsort() in FillPolygon().
diff --git a/libs/gfx/GP_Polygon.c b/libs/gfx/GP_Polygon.c
index b807d1c..4bd0297 100644
--- a/libs/gfx/GP_Polygon.c
+++ b/libs/gfx/GP_Polygon.c
@@ -35,6 +35,11 @@
#include "GP_HLine.h"
#include "GP_Polygon.h"
+/* A 2D point specified by GP_Coord coordinates. */
+typedef struct {
+ GP_Coord x, y;
+} GP_Point;
+
/* "almost equality" for float coordinates */
#define GP_COORDS_ALMOST_EQUAL(a,b) (fabsf(a-b) < 0.00001f)
@@ -48,6 +53,8 @@
/* Working record about an edge. */
struct GP_Edge {
+ GP_Point start; /* starting point as specified by user */
+ GP_Point end; /* ending point as specified by user */
int state; /* edge state */
float x; /* X coordinate of the working point */
int y; /* Y coordinate of the working point */
@@ -56,23 +63,31 @@ struct GP_Edge {
};
/* Initializes the edge structure. */
-static void GP_InitEdge(struct GP_Edge *e, GP_Coord x1, GP_Coord y1,
- GP_Coord x2, GP_Coord y2)
+static void GP_InitEdge(struct GP_Edge *e, GP_Point start, GP_Point end)
{
- GP_ASSERT(y1 != y2, "horizontal edges not allowed here");
+ e->start = start;
+ e->end = end;
/* initialize the working point to the top point of the edge */
- if (y1 < y2) {
- e->x = x1;
- e->y = y1;
+ if (start.y < end.y) {
+ e->x = (float) start.x;
+ e->y = start.y;
} else {
- e->x = x2;
- e->y = y2;
+ e->x = (float) end.x;
+ e->y = end.y;
}
- e->dy = GP_ABS(y2 - y1);
- e->dxy = (float)(x2 - x1)/(y2 - y1);
- e->state = EDGE_READY;
+ e->dy = GP_ABS(end.y - start.y) - 1;
+
+ if (e->dy < 0) {
+
+ /* horizontal edge */
+ e->dxy = (start.x < end.x) ? INFINITY : -INFINITY;
+ e->state = EDGE_FINISHED; /* these are skipped */
+ } else {
+ e->dxy = (float)(end.x - start.x)/(end.y - start.y);
+ e->state = EDGE_READY;
+ }
}
/* Type of a callback function to be passed to qsort(). */
@@ -117,10 +132,6 @@ static int GP_CompareEdgesRuntime(struct GP_Edge *e1, struct GP_Edge *e2)
return 0;
}
-typedef struct {
- GP_Coord x, y;
-} GP_Point;
-
void GP_FillPolygon_Raw(GP_Context *context, unsigned int nvert,
const GP_Coord *xy, GP_Pixel pixel)
{
@@ -150,40 +161,17 @@ void GP_FillPolygon_Raw(GP_Context *context, unsigned int nvert,
*/
unsigned int nexti = (i+1) % nvert;
- /* skip horizontal edges */
- if (vert[i].y == vert[nexti].y) {
- continue;
- }
+ GP_InitEdge(edges + nedges, vert[i], vert[nexti]);
- GP_InitEdge(edges + nedges,
- vert[i].x, vert[i].y,
- vert[nexti].x, vert[nexti].y);
- e = edges + nedges;
-
nedges++;
}
if (nedges < 2)
return; /* not really a polygon */
-
- for (i = 1; i < nedges; i++) {
- e = edges + i;
- struct GP_Edge *prev_e = edges + i - 1;
- if (GP_COORDS_ALMOST_EQUAL(prev_e->x + prev_e->dy*prev_e->dxy, e->x)) {
- prev_e->dy--;
- }
- else if (GP_COORDS_ALMOST_EQUAL(e->x + e->dy*e->dxy, prev_e->x)) {
- e->dy--;
- }
- }
/* initially sort edges by Y, then X */
qsort(edges, nedges, sizeof(struct GP_Edge),
(GP_SortCallback) GP_CompareEdgesInitial);
-
- for (i = 0; i < nedges; i++) {
- e = edges + i;
- }
/*
* for each scanline, compute intersections with all edges
@@ -224,23 +212,17 @@ void GP_FillPolygon_Raw(GP_Context *context, unsigned int nvert,
float end = inter[i+1];
GP_HLine_Raw(context, start, end, y, pixel);
}
-
- /* check and mark edges we are done with */
- for (i = 0; i < nedges; i++) {
- e = edges + i;
- if (e->state == EDGE_ACTIVE && e->dy == 0) {
- e->state = EDGE_FINISHED;
- }
- }
- qsort(edges, nedges, sizeof(struct GP_Edge),
- (GP_SortCallback) GP_CompareEdgesRuntime);
/* update active edges for next step */
for (i = 0; i < nedges; i++) {
e = edges + i;
if (e->state == EDGE_ACTIVE) {
- e->x += e->dxy;
- e->dy--;
+ if (e->dy == 0) {
+ e->state = EDGE_FINISHED;
+ } else {
+ e->x += e->dxy;
+ e->dy--;
+ }
}
}
}
-----------------------------------------------------------------------
Summary of changes:
libs/gfx/GP_Polygon.c | 84 +++++++++++++++++++-----------------------------
1 files changed, 33 insertions(+), 51 deletions(-)
repo.or.cz automatic notification. Contact project admin jiri.bluebear.dluhos(a)gmail.com
if you want to unsubscribe, or site admin admin(a)repo.or.cz if you receive
no reply.
--
gfxprim.git ("A simple 2D graphics library with emphasis on correctness and well-defined operation.")
1
0
[repo.or.cz] gfxprim.git branch master updated: 96f86e4c8dfdbdea1a468aa29130010be8f89e27
by bluebear 10 Dec '12
by bluebear 10 Dec '12
10 Dec '12
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project gfxprim.git.
The branch, master has been updated
via 96f86e4c8dfdbdea1a468aa29130010be8f89e27 (commit)
via 5534588fb5e3d02ee7504e01ce8b3f1045fba7fd (commit)
from 2ebe2eeef4357ca15c5c0656973fffb1487d4b2d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://repo.or.cz/w/gfxprim.git/commit/96f86e4c8dfdbdea1a468aa29130010be8f8…
commit 96f86e4c8dfdbdea1a468aa29130010be8f89e27
Merge: 5534588 2ebe2ee
Author: Jiri BlueBear Dluhos <jiri.bluebear.dluhos(a)gmail.com>
Date: Mon Dec 10 14:10:24 2012 +0100
Merge branch 'master' of ssh://repo.or.cz/srv/git/gfxprim
http://repo.or.cz/w/gfxprim.git/commit/5534588fb5e3d02ee7504e01ce8b3f1045fb…
commit 5534588fb5e3d02ee7504e01ce8b3f1045fba7fd
Author: Jiri BlueBear Dluhos <jiri.bluebear.dluhos(a)gmail.com>
Date: Mon Dec 10 14:09:58 2012 +0100
Rewrote FillPolygon() according to books. Still not correct though.
diff --git a/libs/gfx/GP_Polygon.c b/libs/gfx/GP_Polygon.c
index 2114006..b807d1c 100644
--- a/libs/gfx/GP_Polygon.c
+++ b/libs/gfx/GP_Polygon.c
@@ -26,6 +26,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
+#include <limits.h>
#include "core/GP_Transform.h"
#include "core/GP_GetPutPixel.h"
@@ -34,166 +35,214 @@
#include "GP_HLine.h"
#include "GP_Polygon.h"
-/* A single edge of the polygon. */
-struct GP_PolygonEdge {
- float x1, y1, x2, y2;
- float ymin, ymax;
- float dx_by_dy; /* dx/dy (0 for horizontal edges) */
-};
+/* "almost equality" for float coordinates */
+#define GP_COORDS_ALMOST_EQUAL(a,b) (fabsf(a-b) < 0.00001f)
-/* Threshod value for delta y; edges with dy smaller than this are considered horizontal. */
-const float GP_HORIZ_DY_THRESHOLD = 0.00001f;
+/*
+ * Edge state. Every edge proceeds from READY to ACTIVE and then FINISHED.
+ * Numeric values reflect sorting priority (ACTIVE < READY < FINISHED).
+ */
+#define EDGE_FINISHED 2
+#define EDGE_READY 1
+#define EDGE_ACTIVE 0
+
+/* Working record about an edge. */
+struct GP_Edge {
+ int state; /* edge state */
+ float x; /* X coordinate of the working point */
+ int y; /* Y coordinate of the working point */
+ int dy; /* vertical size */
+ float dxy; /* dx/dy */
+};
-/* Initializes the polygon_edge structure. */
-static void GP_InitEdge(struct GP_PolygonEdge *edge, float x1, float y1,
- float x2, float y2)
+/* Initializes the edge structure. */
+static void GP_InitEdge(struct GP_Edge *e, GP_Coord x1, GP_Coord y1,
+ GP_Coord x2, GP_Coord y2)
{
- edge->x1 = x1;
- edge->y1 = y1;
- edge->x2 = x2;
- edge->y2 = y2;
- edge->ymin = fminf(edge->y1, edge->y2);
- edge->ymax = fmaxf(edge->y1, edge->y2);
-
- /* horizontal (or almost horizontal) edges are a special case */
- if ((edge->ymax - edge->ymin) < GP_HORIZ_DY_THRESHOLD) {
- edge->dx_by_dy = 0.0; /* not meaningful */
- return;
+ GP_ASSERT(y1 != y2, "horizontal edges not allowed here");
+
+ /* initialize the working point to the top point of the edge */
+ if (y1 < y2) {
+ e->x = x1;
+ e->y = y1;
+ } else {
+ e->x = x2;
+ e->y = y2;
}
- float dx = (edge->x2 - edge->x1);
- float dy = (edge->y2 - edge->y1);
- edge->dx_by_dy = dx / dy;
+ e->dy = GP_ABS(y2 - y1);
+ e->dxy = (float)(x2 - x1)/(y2 - y1);
+ e->state = EDGE_READY;
}
-static int GP_IsEdgeHorizontal(struct GP_PolygonEdge *edge)
-{
- return ((edge->ymax - edge->ymin) < GP_HORIZ_DY_THRESHOLD);
-}
+/* Type of a callback function to be passed to qsort(). */
+typedef int (*GP_SortCallback)(const void *, const void *);
-/* Computes an intersection of the specified scanline with the given edge.
- * If successful, returns 1 and stores the resulting X coordinate into result_x.
- * If failed (the edge does not intersect), 0 is returned.
- * Horizontal edges are ignored at this point (result is always 0).
+/*
+ * Compares two edges. Used for initial sorting of the edges.
+ * Edges are sorted by Y first, then by X, then by DXY.
+ * Returns -1 if e1<e2, +1 if e1>e2, 0 if e1==e2.
*/
-static int GP_ComputeIntersection(float *result_x, struct GP_PolygonEdge *edge, float y)
+static int GP_CompareEdgesInitial(struct GP_Edge *e1, struct GP_Edge *e2)
{
- if (y<edge->ymin || y>edge->ymax)
- return 0; /* outside the edge Y range */
+ if (e1->y < e2->y) return -1;
+ if (e1->y > e2->y) return 1;
- if (GP_IsEdgeHorizontal(edge))
- return 0; /* ignore horizontal edges */
+ if (e1->x < e2->x) return -1;
+ if (e1->x > e2->x) return 1;
- *result_x = edge->x1 + (y-edge->y1)*edge->dx_by_dy;
+ if (e1->dxy < e2->dxy) return -1;
+ if (e1->dxy > e2->dxy) return 1;
- return 1;
+ return 0;
}
-/* Sorting callback. Compares two floats and returns -1 if A<B,
- * +1 if A>B, 0 if they are equal.
+/*
+ * Compares two edges. Used for in-run sorting.
+ * Edges are sorted by state (ACTIVE < READY < FINISHED), then by X,
+ * then by DXY.
+ * Returns -1 if e1<e2, +1 if e1>e2, 0 if e1==e2.
*/
-static int GP_CompareFloats(const void *ptr_a, const void *ptr_b)
+static int GP_CompareEdgesRuntime(struct GP_Edge *e1, struct GP_Edge *e2)
{
- float a = ((float *) ptr_a)[0];
- float b = ((float *) ptr_b)[0];
+ if (e1->state < e2->state) return -1;
+ if (e1->state > e2->state) return 1;
+
+ if (e1->x < e2->x) return -1;
+ if (e1->x > e2->x) return 1;
+
+ if (e1->dxy < e2->dxy) return -1;
+ if (e1->dxy > e2->dxy) return 1;
- if (a < b) return -1;
- if (a > b) return 1;
return 0;
}
-/* Computes intersections of the y coordinate with all edges,
- * writing the X coordinates of the intersections, sorted by X coordinate,
- * into 'results'.
- */
-static int GP_ComputeScanline(float *results, struct GP_PolygonEdge *edges,
- size_t count, float y)
-{
- unsigned int edge_index = 0;
- int result_index = 0;
-
- for (; edge_index<count; edge_index++) {
+typedef struct {
+ GP_Coord x, y;
+} GP_Point;
- struct GP_PolygonEdge *edge = edges + edge_index;
- float x;
+void GP_FillPolygon_Raw(GP_Context *context, unsigned int nvert,
+ const GP_Coord *xy, GP_Pixel pixel)
+{
+ unsigned int i;
+ struct GP_Edge *e;
+
+ if (nvert < 3)
+ return; /* not enough vertices */
+
+ GP_Point const *vert = (GP_Point const *) xy;
+
+ /* find first and last scanline */
+ GP_Coord ymin = INT_MAX, ymax = -INT_MAX;
+ for (i = 0; i < nvert; i++) {
+ ymax = GP_MAX(ymax, vert[i].y);
+ ymin = GP_MIN(ymin, vert[i].y);
+ }
+
+ /* build a list of edges */
+ struct GP_Edge edges[nvert];
+ unsigned int nedges = 0; /* number of edges in list */
+ for (i = 0; i < nvert; i++) {
/*
- * Horizontal edges match either as a whole (yielding two
- * intersections), or not at all.
+ * next vertex index (wraps to 0 at end to connect
+ * the last vertex with the first one)
*/
- if (GP_IsEdgeHorizontal(edge)) {
- if (fabsf(edge->ymin - y) < 0.00001f) {
- results[result_index++] = GP_MIN(edge->x1, edge->x2);
- results[result_index++] = GP_MAX(edge->x1, edge->x2);
- }
+ unsigned int nexti = (i+1) % nvert;
+
+ /* skip horizontal edges */
+ if (vert[i].y == vert[nexti].y) {
continue;
}
- if (GP_ComputeIntersection(&x, edge, y)) {
- results[result_index++] = x;
- }
+ GP_InitEdge(edges + nedges,
+ vert[i].x, vert[i].y,
+ vert[nexti].x, vert[nexti].y);
+ e = edges + nedges;
+
+ nedges++;
}
- qsort(results, result_index, sizeof(float), GP_CompareFloats);
-
- return result_index;
-}
-
-void GP_FillPolygon_Raw(GP_Context *context, unsigned int vertex_count,
- const GP_Coord *xy, GP_Pixel pixel)
-{
- float ymin = HUGE_VALF, ymax = -HUGE_VALF;
- struct GP_PolygonEdge *edge;
- struct GP_PolygonEdge edges[2*vertex_count];
-
-
- /* Build edge structures for each vertex-vertex connection.
- * NOTE: Each vertex is in fact in the middle of the pixel, so
- * add 0.5 to both coordinates.
- */
- int i;
- for (i = 0; i < (int)vertex_count - 1; i++) {
- edge = edges + i;
- GP_InitEdge(edge,
- 0.5f + xy[2*i], 0.5f + xy[2*i + 1],
- 0.5f + xy[2*i + 2], 0.5f + xy[2*i + 3]);
- ymin = fminf(ymin, edge->ymin);
- ymax = fmaxf(ymax, edge->ymax);
+ if (nedges < 2)
+ return; /* not really a polygon */
+
+ for (i = 1; i < nedges; i++) {
+ e = edges + i;
+ struct GP_Edge *prev_e = edges + i - 1;
+ if (GP_COORDS_ALMOST_EQUAL(prev_e->x + prev_e->dy*prev_e->dxy, e->x)) {
+ prev_e->dy--;
+ }
+ else if (GP_COORDS_ALMOST_EQUAL(e->x + e->dy*e->dxy, prev_e->x)) {
+ e->dy--;
+ }
}
- /* the last edge (from the last point to the first one) */
- edge = edges + vertex_count - 1;
- GP_InitEdge(edge,
- 0.5f + xy[2*i], 0.5f + xy[2*i + 1],
- 0.5f + xy[0], 0.5f + xy[1]);
+ /* initially sort edges by Y, then X */
+ qsort(edges, nedges, sizeof(struct GP_Edge),
+ (GP_SortCallback) GP_CompareEdgesInitial);
- /* For each scanline, compute intersections with all edges
+ for (i = 0; i < nedges; i++) {
+ e = edges + i;
+ }
+
+ /*
+ * for each scanline, compute intersections with all edges
* and draw a horizontal line segment between the intersections.
*/
- float intersections[vertex_count];
- int y;
- for (y = (int) ymin; y <= (int) ymax; y++) {
- int inter_count = GP_ComputeScanline(intersections, edges, vertex_count, y + 0.5f);
-
- i = 0;
- for (;;) {
- if (i >= inter_count) break;
- float start = intersections[i++];
- if (i >= inter_count) {
-
- /* a solo vertex or a single-point intersection */
- GP_PutPixel_Raw(context, start, y, pixel);
- break;
+ float inter[nedges];
+ unsigned int ninter;
+ int y = ymin;
+ for (y = ymin; y <= ymax; y++) {
+
+ /* mark edges we have just reached as active */
+ for (i = 0; i < nedges; i++) {
+ e = edges + i;
+ if (e->state == EDGE_READY && (y == e->y)) {
+ e->state = EDGE_ACTIVE;
}
- float end = intersections[i++];
- if (start == end) {
-
- /* two intersections - edge joint */
- if (i >= inter_count) break;
- end = intersections[i++];
+ }
+ qsort(edges, nedges, sizeof(struct GP_Edge),
+ (GP_SortCallback) GP_CompareEdgesRuntime);
+
+ /* record intersections with active edges */
+ ninter = 0;
+ for (i = 0; i < nedges; i++) {
+ e = edges + i;
+ if (e->state == EDGE_ACTIVE) {
+ inter[ninter++] = e->x;
}
+ }
+
+ /* draw each even range between intersections */
+ for (i = 0; i < ninter; i += 2) {
+ float start = inter[i];
+
+ /* odd number of intersections - skip last */
+ if (i+1 == ninter)
+ break;
+
+ float end = inter[i+1];
GP_HLine_Raw(context, start, end, y, pixel);
}
+
+ /* check and mark edges we are done with */
+ for (i = 0; i < nedges; i++) {
+ e = edges + i;
+ if (e->state == EDGE_ACTIVE && e->dy == 0) {
+ e->state = EDGE_FINISHED;
+ }
+ }
+ qsort(edges, nedges, sizeof(struct GP_Edge),
+ (GP_SortCallback) GP_CompareEdgesRuntime);
+
+ /* update active edges for next step */
+ for (i = 0; i < nedges; i++) {
+ e = edges + i;
+ if (e->state == EDGE_ACTIVE) {
+ e->x += e->dxy;
+ e->dy--;
+ }
+ }
}
}
-----------------------------------------------------------------------
Summary of changes:
libs/gfx/GP_Polygon.c | 291 ++++++++++++++++++++++++++++--------------------
1 files changed, 170 insertions(+), 121 deletions(-)
repo.or.cz automatic notification. Contact project admin jiri.bluebear.dluhos(a)gmail.com
if you want to unsubscribe, or site admin admin(a)repo.or.cz if you receive
no reply.
--
gfxprim.git ("A simple 2D graphics library with emphasis on correctness and well-defined operation.")
1
0
[repo.or.cz] gfxprim.git branch master updated: 2ebe2eeef4357ca15c5c0656973fffb1487d4b2d
by metan 10 Dec '12
by metan 10 Dec '12
10 Dec '12
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project gfxprim.git.
The branch, master has been updated
via 2ebe2eeef4357ca15c5c0656973fffb1487d4b2d (commit)
from efb97f7e1542fcceb2772ee7481530cf84b08847 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://repo.or.cz/w/gfxprim.git/commit/2ebe2eeef4357ca15c5c0656973fffb1487d…
commit 2ebe2eeef4357ca15c5c0656973fffb1487d4b2d
Author: Cyril Hrubis <metan(a)ucw.cz>
Date: Mon Dec 10 00:45:24 2012 +0100
libs: backends: Fix typo in GP_BackendInit.c
diff --git a/libs/backends/GP_BackendInit.c b/libs/backends/GP_BackendInit.c
index 0b04407..bef0dba 100644
--- a/libs/backends/GP_BackendInit.c
+++ b/libs/backends/GP_BackendInit.c
@@ -166,7 +166,7 @@ static int x11_params_to_flags(const char *param, GP_Size *w, GP_Size *h,
return 0;
}
- backend_sdl_help(help, "X11: Invalid parameters");
+ backend_x11_help(help, "X11: Invalid parameters");
return 1;
}
-----------------------------------------------------------------------
Summary of changes:
libs/backends/GP_BackendInit.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
repo.or.cz automatic notification. Contact project admin jiri.bluebear.dluhos(a)gmail.com
if you want to unsubscribe, or site admin admin(a)repo.or.cz if you receive
no reply.
--
gfxprim.git ("A simple 2D graphics library with emphasis on correctness and well-defined operation.")
1
0
[repo.or.cz] gfxprim.git branch master updated: efb97f7e1542fcceb2772ee7481530cf84b08847
by metan 10 Dec '12
by metan 10 Dec '12
10 Dec '12
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project gfxprim.git.
The branch, master has been updated
via efb97f7e1542fcceb2772ee7481530cf84b08847 (commit)
from 111cef13540298997a42d245a80c81aca5d4cc68 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://repo.or.cz/w/gfxprim.git/commit/efb97f7e1542fcceb2772ee7481530cf84b0…
commit efb97f7e1542fcceb2772ee7481530cf84b08847
Author: Cyril Hrubis <metan(a)ucw.cz>
Date: Mon Dec 10 00:33:40 2012 +0100
build: Remove unused tests.mk file.
diff --git a/tests.mk b/tests.mk
deleted file mode 100644
index 39f0835..0000000
--- a/tests.mk
+++ /dev/null
@@ -1,55 +0,0 @@
-.PHONY: tests runtests
-
-#
-# List of test targets (testsuite incl. automatically)
-#
-ifndef TESTS
-TESTS=
-endif
-
-#
-# Testsuite with automated collection of tests
-# All .test.c files are scraped for GP_TEST definitions
-#
-
-ifdef TESTSUITE
-# a bit crude way to link with test minilibrary
-GP_TESTLIB_SRCS=$(wildcard ${TOPDIR}/tests/common/*.c)
-CSOURCES+=${GP_TESTLIB_SRCS}
-
-# generated suite creation code
-TESTSUITE_GEN=collected_tests.gen.c # also fixed in the code generator
-CLEAN+=${TESTSUITE_GEN}
-
-${TESTSUITE_GEN}: $(filter-out ${TESTSUITE_GEN},${GENSOURCES}) ${GENHEADERS}
-ifdef VERBOSE
- ${PYTHON} ${TOPDIR}/pylib/bin/generate_collected_tests.py -t $(TEMPLATE_DIR) "." "$@"
-else
- @echo "TSTS $@"
- @${PYTHON} ${TOPDIR}/pylib/bin/generate_collected_tests.py -t $(TEMPLATE_DIR) "." "$@"
-endif
-
-
-TESTSUITE_SRCS=$(wildcard *.test.c) ${GENSOURCES} ${GENHEADERS} ${GP_TESTLIB_SRCS} ${TESTSUITE_GEN}
-INCLUDE+=../tests/common
-TESTSUITE_OBJS=$(patsubst %.c,%.o,$(TESTSUITE_SRCS))
-CLEAN+=${TESTSUITE} ${TESTSUITE_OBJS}
-TESTS+=${TESTSUITE}
-
-${TESTSUITE}: ${TESTSUITE_OBJS}
-ifdef VERBOSE
- $(CC) $(CFLAGS) $(LDFLAGS) -Wl,--start-group $(LDLIBS) $^ -Wl,--end-group -o $@
-else
- @echo "LD $@"
- @$(CC) $(CFLAGS) $(LDFLAGS) -Wl,--start-group $(LDLIBS) $^ -Wl,--end-group -o $@
-endif # VERBOSE
-
-endif # TESTSUITE
-
-tests: $(TESTS)
-
-runtests: tests
- for test in $(TESTS); do LD_LIBRARY_PATH=../../build ./"$$test"; done
-
-# WARN: avoid double includion?
-include $(TOPDIR)/gen.mk
-----------------------------------------------------------------------
Summary of changes:
tests.mk | 55 -------------------------------------------------------
1 files changed, 0 insertions(+), 55 deletions(-)
delete mode 100644 tests.mk
repo.or.cz automatic notification. Contact project admin jiri.bluebear.dluhos(a)gmail.com
if you want to unsubscribe, or site admin admin(a)repo.or.cz if you receive
no reply.
--
gfxprim.git ("A simple 2D graphics library with emphasis on correctness and well-defined operation.")
1
0
[repo.or.cz] gfxprim.git branch master updated: 111cef13540298997a42d245a80c81aca5d4cc68
by metan 09 Dec '12
by metan 09 Dec '12
09 Dec '12
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project gfxprim.git.
The branch, master has been updated
via 111cef13540298997a42d245a80c81aca5d4cc68 (commit)
from 2cf30f8101ea618085a197ea6bb8bad9d5cb0708 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://repo.or.cz/w/gfxprim.git/commit/111cef13540298997a42d245a80c81aca5d4…
commit 111cef13540298997a42d245a80c81aca5d4cc68
Author: Cyril Hrubis <metan(a)ucw.cz>
Date: Sun Dec 9 23:30:04 2012 +0100
tests: gfx: Add Ellipse.c testsuite.
diff --git a/tests/gfx/Ellipse.c b/tests/gfx/Ellipse.c
new file mode 100644
index 0000000..5b0add6
--- /dev/null
+++ b/tests/gfx/Ellipse.c
@@ -0,0 +1,367 @@
+/*****************************************************************************
+ * This file is part of gfxprim library. *
+ * *
+ * Gfxprim is free software; you can redistribute it and/or *
+ * modify it under the terms of the GNU Lesser General Public *
+ * License as published by the Free Software Foundation; either *
+ * version 2.1 of the License, or (at your option) any later version. *
+ * *
+ * Gfxprim is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with gfxprim; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, *
+ * Boston, MA 02110-1301 USA *
+ * *
+ * Copyright (C) 2009-2012 Cyril Hrubis <metan(a)ucw.cz> *
+ * *
+ *****************************************************************************/
+
+#include <string.h>
+#include <errno.h>
+#include <sys/stat.h>
+
+#include <core/GP_Context.h>
+#include <gfx/GP_Ellipse.h>
+
+#include "tst_test.h"
+
+#include "common.h"
+
+struct testcase {
+ /* cicle description */
+ GP_Coord x;
+ GP_Coord y;
+ GP_Size a;
+ GP_Size b;
+
+ /* expected result */
+ GP_Size w, h;
+ const char pixmap[];
+};
+
+static int test_ellipse(const struct testcase *t)
+{
+ GP_Context *c;
+ int err;
+
+ c = GP_ContextAlloc(t->w, t->h, GP_PIXEL_G8);
+
+ if (c == NULL) {
+ tst_err("Failed to allocate context");
+ return TST_UNTESTED;
+ }
+
+ /* zero the pixels buffer */
+ memset(c->pixels, 0, c->w * c->h);
+
+ GP_Ellipse(c, t->x, t->y, t->a, t->b, 1);
+
+ err = compare_buffers(t->pixmap, c);
+
+ if (err)
+ return TST_FAILED;
+
+ return TST_SUCCESS;
+}
+
+static struct testcase testcase_ellipse_a0_b0 = {
+ .x = 2,
+ .y = 2,
+ .a = 0,
+ .b = 0,
+
+ .w = 5,
+ .h = 5,
+
+ .pixmap = {
+ 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ }
+};
+
+static struct testcase testcase_ellipse_a1_b0 = {
+ .x = 2,
+ .y = 2,
+ .a = 1,
+ .b = 0,
+
+ .w = 5,
+ .h = 5,
+
+ .pixmap = {
+ 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 0, 1, 1, 1, 0,
+ 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ }
+};
+
+static struct testcase testcase_ellipse_a0_b1 = {
+ .x = 2,
+ .y = 2,
+ .a = 0,
+ .b = 1,
+
+ .w = 5,
+ .h = 5,
+
+ .pixmap = {
+ 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0,
+ 0, 0, 1, 0, 0,
+ 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0,
+ }
+};
+
+static struct testcase testcase_ellipse_a1_b1 = {
+ .x = 2,
+ .y = 2,
+ .a = 1,
+ .b = 1,
+
+ .w = 5,
+ .h = 5,
+
+ .pixmap = {
+ 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0,
+ 0, 1, 0, 1, 0,
+ 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0,
+ }
+};
+
+static struct testcase testcase_ellipse_a2_b1 = {
+ .x = 3,
+ .y = 3,
+ .a = 2,
+ .b = 1,
+
+ .w = 7,
+ .h = 7,
+
+ .pixmap = {
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 1, 1, 0, 0,
+ 0, 1, 0, 0, 0, 1, 0,
+ 0, 0, 1, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ }
+};
+
+static struct testcase testcase_ellipse_a1_b2 = {
+ .x = 3,
+ .y = 3,
+ .a = 1,
+ .b = 2,
+
+ .w = 7,
+ .h = 7,
+
+ .pixmap = {
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 1, 0, 1, 0, 0,
+ 0, 0, 1, 0, 1, 0, 0,
+ 0, 0, 1, 0, 1, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ }
+};
+
+static struct testcase testcase_ellipse_a2_b2 = {
+ .x = 3,
+ .y = 3,
+ .a = 2,
+ .b = 2,
+
+ .w = 7,
+ .h = 7,
+
+ .pixmap = {
+ 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 1, 1, 0, 0,
+ 0, 1, 0, 0, 0, 1, 0,
+ 0, 1, 0, 0, 0, 1, 0,
+ 0, 1, 0, 0, 0, 1, 0,
+ 0, 0, 1, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ }
+};
+
+static struct testcase testcase_ellipse_a1_b3 = {
+ .x = 4,
+ .y = 4,
+ .a = 1,
+ .b = 3,
+
+ .w = 9,
+ .h = 9,
+
+ .pixmap = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 1, 0, 0, 0,
+ 0, 0, 0, 1, 0, 1, 0, 0, 0,
+ 0, 0, 0, 1, 0, 1, 0, 0, 0,
+ 0, 0, 0, 1, 0, 1, 0, 0, 0,
+ 0, 0, 0, 1, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }
+};
+
+static struct testcase testcase_ellipse_a3_b2 = {
+ .x = 4,
+ .y = 4,
+ .a = 3,
+ .b = 2,
+
+ .w = 9,
+ .h = 9,
+
+ .pixmap = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 1, 1, 0, 0, 0,
+ 0, 1, 1, 0, 0, 0, 1, 1, 0,
+ 0, 1, 0, 0, 0, 0, 0, 1, 0,
+ 0, 1, 1, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 1, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }
+};
+
+static struct testcase testcase_ellipse_a3_b3 = {
+ .x = 4,
+ .y = 4,
+ .a = 3,
+ .b = 3,
+
+ .w = 9,
+ .h = 9,
+
+ .pixmap = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 1, 1, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 1, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 1, 0,
+ 0, 1, 0, 0, 0, 0, 0, 1, 0,
+ 0, 1, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 1, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 1, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }
+};
+
+static struct testcase testcase_ellipse_a6_b6_clip = {
+ .x = 0,
+ .y = 0,
+ .a = 6,
+ .b = 6,
+
+ .w = 8,
+ .h = 8,
+
+ .pixmap = {
+ 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 1, 1, 0, 0, 0,
+ 1, 1, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ }
+};
+
+static struct testcase testcase_ellipse_a5_b5_clip = {
+ .x = 0,
+ .y = 5,
+ .a = 5,
+ .b = 5,
+
+ .w = 11,
+ .h = 11,
+
+ .pixmap = {
+ 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ }
+};
+
+const struct tst_suite tst_suite = {
+ .suite_name = "Ellipse Testsuite",
+ .tests = {
+ {.name = "Ellipse a=0 b=0",
+ .tst_fn = test_ellipse,
+ .data = &testcase_ellipse_a0_b0},
+
+ {.name = "Ellipse a=1 b=0",
+ .tst_fn = test_ellipse,
+ .data = &testcase_ellipse_a1_b0},
+
+ {.name = "Ellipse a=0 b=1",
+ .tst_fn = test_ellipse,
+ .data = &testcase_ellipse_a0_b1},
+
+ {.name = "Ellipse a=1 b=1",
+ .tst_fn = test_ellipse,
+ .data = &testcase_ellipse_a1_b1},
+
+ {.name = "Ellipse a=2 b=1",
+ .tst_fn = test_ellipse,
+ .data = &testcase_ellipse_a2_b1},
+
+ {.name = "Ellipse a=1 b=2",
+ .tst_fn = test_ellipse,
+ .data = &testcase_ellipse_a1_b2},
+
+ {.name = "Ellipse a=2 b=2",
+ .tst_fn = test_ellipse,
+ .data = &testcase_ellipse_a2_b2},
+
+ {.name = "Ellipse a=1 b=3",
+ .tst_fn = test_ellipse,
+ .data = &testcase_ellipse_a1_b3},
+
+ {.name = "Ellipse a=3 b=2",
+ .tst_fn = test_ellipse,
+ .data = &testcase_ellipse_a3_b2},
+
+ {.name = "Ellipse a=3 b=3",
+ .tst_fn = test_ellipse,
+ .data = &testcase_ellipse_a3_b3},
+
+ {.name = "Ellipse a=5 b=5 clipped",
+ .tst_fn = test_ellipse,
+ .data = &testcase_ellipse_a5_b5_clip},
+
+ {.name = "Ellipse a=6 b=6 clipped",
+ .tst_fn = test_ellipse,
+ .data = &testcase_ellipse_a6_b6_clip},
+
+ {.name = NULL}
+ }
+};
diff --git a/tests/gfx/Makefile b/tests/gfx/Makefile
index fafb1cb..d8090a9 100644
--- a/tests/gfx/Makefile
+++ b/tests/gfx/Makefile
@@ -3,10 +3,11 @@ include $(TOPDIR)/pre.mk
CSOURCES=$(shell echo *.c)
-APPS=gfx_benchmark Circle FillCircle Line CircleSeg Polygon
+APPS=gfx_benchmark Circle FillCircle Line CircleSeg Polygon Ellipse
Circle: common.o
FillCircle: common.o
+Ellipse: common.o
Line: common.o
CircleSeg: common.o
Polygon: common.o
diff --git a/tests/gfx/runtest.sh b/tests/gfx/runtest.sh
index 0e50fb6..2edd6b4 100755
--- a/tests/gfx/runtest.sh
+++ b/tests/gfx/runtest.sh
@@ -13,5 +13,6 @@ export LIBC_FATAL_STDERR_=1
LD_PRELOAD=`pwd`/../framework/libtst_preload.so LD_LIBRARY_PATH=../../build/ ./Line "$@"
LD_PRELOAD=`pwd`/../framework/libtst_preload.so LD_LIBRARY_PATH=../../build/ ./Circle "$@"
LD_PRELOAD=`pwd`/../framework/libtst_preload.so LD_LIBRARY_PATH=../../build/ ./FillCircle "$@"
+LD_PRELOAD=`pwd`/../framework/libtst_preload.so LD_LIBRARY_PATH=../../build/ ./Ellipse "$@"
LD_PRELOAD=`pwd`/../framework/libtst_preload.so LD_LIBRARY_PATH=../../build/ ./CircleSeg "$@"
LD_PRELOAD=`pwd`/../framework/libtst_preload.so LD_LIBRARY_PATH=../../build/ ./Polygon "$@"
-----------------------------------------------------------------------
Summary of changes:
tests/gfx/{Circle.c => Ellipse.c} | 280 ++++++++++++++++++++++++++----------
tests/gfx/Makefile | 3 +-
tests/gfx/runtest.sh | 1 +
3 files changed, 205 insertions(+), 79 deletions(-)
copy tests/gfx/{Circle.c => Ellipse.c} (52%)
repo.or.cz automatic notification. Contact project admin jiri.bluebear.dluhos(a)gmail.com
if you want to unsubscribe, or site admin admin(a)repo.or.cz if you receive
no reply.
--
gfxprim.git ("A simple 2D graphics library with emphasis on correctness and well-defined operation.")
1
0