summaryrefslogtreecommitdiffstats
path: root/src/trace
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2013-02-06 08:19:53 +0000
committerJabiertxo Arraiza Cenoz <jtx@jtx.marker.es>2013-02-06 08:19:53 +0000
commit549a79b5367ffd259a23fbd18e93199d1c0149b7 (patch)
tree9c4ce4a0217afa63b59f32d02a60b848f43a9520 /src/trace
parentMerge from branch (diff)
parentSupress Pango error message. (diff)
downloadinkscape-549a79b5367ffd259a23fbd18e93199d1c0149b7.tar.gz
inkscape-549a79b5367ffd259a23fbd18e93199d1c0149b7.zip
Merge from branch
(bzr r11950.1.19)
Diffstat (limited to 'src/trace')
-rw-r--r--src/trace/filterset.cpp35
-rw-r--r--src/trace/filterset.h6
-rw-r--r--src/trace/imagemap-gdk.cpp77
-rw-r--r--src/trace/imagemap-gdk.h8
-rw-r--r--src/trace/imagemap.cpp82
5 files changed, 47 insertions, 161 deletions
diff --git a/src/trace/filterset.cpp b/src/trace/filterset.cpp
index 908985225..f6c025956 100644
--- a/src/trace/filterset.cpp
+++ b/src/trace/filterset.cpp
@@ -365,41 +365,6 @@ grayMapCanny(GrayMap *gm, double lowThreshold, double highThreshold)
-
-
-
-
-/**
- *
- */
-GdkPixbuf *
-gdkCanny(GdkPixbuf *img, double lowThreshold, double highThreshold)
-{
- if (!img)
- return NULL;
-
-
- GrayMap *grayMap = gdkPixbufToGrayMap(img);
- if (!grayMap)
- return NULL;
-
- /*grayMap->writePPM(grayMap, "gbefore.ppm");*/
-
- GrayMap *cannyGm = grayMapCanny(grayMap,lowThreshold, highThreshold);
-
- grayMap->destroy(grayMap);
-
- if (!cannyGm)
- return NULL;
-
- /*grayMap->writePPM(grayMap, "gafter.ppm");*/
-
- GdkPixbuf *newImg = grayMapToGdkPixbuf(cannyGm);
-
-
- return newImg;
-}
-
/*#########################################################################
### Q U A N T I Z A T I O N
#########################################################################*/
diff --git a/src/trace/filterset.h b/src/trace/filterset.h
index eeafc079f..820d225c3 100644
--- a/src/trace/filterset.h
+++ b/src/trace/filterset.h
@@ -40,12 +40,6 @@ GrayMap *grayMapCanny(GrayMap *gmap,
/**
*
*/
-GdkPixbuf *gdkCanny(GdkPixbuf *img,
- double lowThreshold, double highThreshold);
-
-/**
- *
- */
GrayMap *quantizeBand(RgbMap *rgbmap, int nrColors);
diff --git a/src/trace/imagemap-gdk.cpp b/src/trace/imagemap-gdk.cpp
index e5ff23ad0..7c7139002 100644
--- a/src/trace/imagemap-gdk.cpp
+++ b/src/trace/imagemap-gdk.cpp
@@ -58,7 +58,7 @@ GdkPixbuf *grayMapToGdkPixbuf(GrayMap *grayMap)
GdkPixbuf *buf = gdk_pixbuf_new_from_data(pixdata, GDK_COLORSPACE_RGB,
0, 8, grayMap->width, grayMap->height,
- rowstride, NULL, NULL);
+ rowstride, (GdkPixbufDestroyNotify)g_free, NULL);
//### Fill in the odd cells with RGB values
int x,y;
@@ -122,44 +122,6 @@ PackedPixelMap *gdkPixbufToPackedPixelMap(GdkPixbuf *buf)
return ppMap;
}
-GdkPixbuf *packedPixelMapToGdkPixbuf(PackedPixelMap *ppMap)
-{
- if (!ppMap)
- return NULL;
-
- guchar *pixdata = (guchar *)
- malloc(sizeof(guchar) * ppMap->width * ppMap->height * 3);
- if (!pixdata)
- return NULL;
-
- int n_channels = 3;
- int rowstride = ppMap->width * 3;
-
- GdkPixbuf *buf = gdk_pixbuf_new_from_data(pixdata, GDK_COLORSPACE_RGB,
- 0, 8, ppMap->width, ppMap->height,
- rowstride, NULL, NULL);
-
- //### Fill in the cells with RGB values
- int x,y;
- int row = 0;
- for (y=0 ; y<ppMap->height ; y++)
- {
- guchar *p = pixdata + row;
- for (x=0 ; x<ppMap->width ; x++)
- {
- unsigned long rgb = ppMap->getPixel(ppMap, x, y);
- p[0] = (rgb >> 16) & 0xff;
- p[1] = (rgb >> 8) & 0xff;
- p[2] = (rgb ) & 0xff;
- p += n_channels;
- }
- row += rowstride;
- }
-
- return buf;
-}
-
-
/*#########################################################################
## R G B M A P
@@ -203,42 +165,7 @@ RgbMap *gdkPixbufToRgbMap(GdkPixbuf *buf)
return rgbMap;
}
-GdkPixbuf *rgbMapToGdkPixbuf(RgbMap *rgbMap)
-{
- if (!rgbMap)
- return NULL;
-
- guchar *pixdata = (guchar *)
- malloc(sizeof(guchar) * rgbMap->width * rgbMap->height * 3);
- if (!pixdata)
- return NULL;
- int n_channels = 3;
- int rowstride = rgbMap->width * 3;
-
- GdkPixbuf *buf = gdk_pixbuf_new_from_data(pixdata, GDK_COLORSPACE_RGB,
- 0, 8, rgbMap->width, rgbMap->height,
- rowstride, NULL, NULL);
-
- //### Fill in the cells with RGB values
- int x,y;
- int row = 0;
- for (y=0 ; y<rgbMap->height ; y++)
- {
- guchar *p = pixdata + row;
- for (x=0 ; x<rgbMap->width ; x++)
- {
- RGB rgb = rgbMap->getPixel(rgbMap, x, y);
- p[0] = rgb.r & 0xff;
- p[1] = rgb.g & 0xff;
- p[2] = rgb.b & 0xff;
- p += n_channels;
- }
- row += rowstride;
- }
-
- return buf;
-}
/*#########################################################################
## I N D E X E D M A P
@@ -260,7 +187,7 @@ GdkPixbuf *indexedMapToGdkPixbuf(IndexedMap *iMap)
GdkPixbuf *buf = gdk_pixbuf_new_from_data(pixdata, GDK_COLORSPACE_RGB,
0, 8, iMap->width, iMap->height,
- rowstride, NULL, NULL);
+ rowstride, (GdkPixbufDestroyNotify)g_free, NULL);
//### Fill in the cells with RGB values
int x,y;
diff --git a/src/trace/imagemap-gdk.h b/src/trace/imagemap-gdk.h
index d04a84d8e..63281658a 100644
--- a/src/trace/imagemap-gdk.h
+++ b/src/trace/imagemap-gdk.h
@@ -24,17 +24,9 @@ extern "C" {
#endif
GrayMap *gdkPixbufToGrayMap(GdkPixbuf *buf);
-
GdkPixbuf *grayMapToGdkPixbuf(GrayMap *grayMap);
-
PackedPixelMap *gdkPixbufToPackedPixelMap(GdkPixbuf *buf);
-
-GdkPixbuf *packedPixelMapToGdkPixbuf(PackedPixelMap *ppMap);
-
RgbMap *gdkPixbufToRgbMap(GdkPixbuf *buf);
-
-GdkPixbuf *rgbMapToGdkPixbuf(RgbMap *rgbMap);
-
GdkPixbuf *indexedMapToGdkPixbuf(IndexedMap *iMap);
diff --git a/src/trace/imagemap.cpp b/src/trace/imagemap.cpp
index c5a6bc2b5..a8d8a8c8f 100644
--- a/src/trace/imagemap.cpp
+++ b/src/trace/imagemap.cpp
@@ -192,16 +192,18 @@ PackedPixelMap *PackedPixelMapCreate(int width, int height)
/** fields **/
me->width = width;
me->height = height;
- me->pixels = (unsigned long *)
- malloc(sizeof(unsigned long) * width * height);
- me->rows = (unsigned long **)
- malloc(sizeof(unsigned long *) * height);
- if (!me->pixels)
- {
+ me->pixels = (unsigned long *) malloc(sizeof(unsigned long) * width * height);
+ if (!me->pixels){
free(me);
return NULL;
- }
-
+ }
+ me->rows = (unsigned long **) malloc(sizeof(unsigned long *) * height);
+ if (!me->rows){
+ free(me->pixels); //allocated as me->pixels is not NULL here: see previous check
+ free(me);
+ return NULL;
+ }
+
unsigned long *row = me->pixels;
for (int i=0 ; i<height ; i++)
{
@@ -270,10 +272,12 @@ static int rWritePPM(RgbMap *me, char *fileName)
static void rDestroy(RgbMap *me)
{
- if (me->pixels)
+ if (me->pixels){
free(me->pixels);
- if (me->rows)
+ }
+ if (me->rows){
free(me->rows);
+ }
free(me);
}
@@ -283,9 +287,10 @@ RgbMap *RgbMapCreate(int width, int height)
{
RgbMap *me = (RgbMap *)malloc(sizeof(RgbMap));
- if (!me)
+ if (!me){
return NULL;
-
+ }
+
/** methods **/
me->setPixel = rSetPixel;
me->setPixelRGB = rSetPixelRGB;
@@ -297,22 +302,23 @@ RgbMap *RgbMapCreate(int width, int height)
/** fields **/
me->width = width;
me->height = height;
- me->pixels = (RGB *)
- malloc(sizeof(RGB) * width * height);
- me->rows = (RGB **)
- malloc(sizeof(RGB *) * height);
- if (!me->pixels)
- {
+ me->pixels = (RGB *) malloc(sizeof(RGB) * width * height);
+ if (!me->pixels){
free(me);
return NULL;
- }
+ }
+ me->rows = (RGB **) malloc(sizeof(RGB *) * height);
+ if (!me->rows){
+ free(me->pixels); //allocated as me->pixels is not NULL here: see previous check
+ free(me);
+ return NULL;
+ }
RGB *row = me->pixels;
- for (int i=0 ; i<height ; i++)
- {
+ for (int i=0 ; i<height ; i++){
me->rows[i] = row;
row += width;
- }
+ }
return me;
}
@@ -376,10 +382,12 @@ static int iWritePPM(IndexedMap *me, char *fileName)
static void iDestroy(IndexedMap *me)
{
- if (me->pixels)
+ if (me->pixels){
free(me->pixels);
- if (me->rows)
+ }
+ if (me->rows){
free(me->rows);
+ }
free(me);
}
@@ -403,31 +411,31 @@ IndexedMap *IndexedMapCreate(int width, int height)
/** fields **/
me->width = width;
me->height = height;
- me->pixels = (unsigned int *)
- malloc(sizeof(unsigned int) * width * height);
- me->rows = (unsigned int **)
- malloc(sizeof(unsigned int *) * height);
- if (!me->pixels)
- {
+ me->pixels = (unsigned int *) malloc(sizeof(unsigned int) * width * height);
+ if (!me->pixels){
free(me);
return NULL;
- }
+ }
+ me->rows = (unsigned int **) malloc(sizeof(unsigned int *) * height);
+ if (!me->rows){
+ free(me->pixels); //allocated as me->pixels is not NULL here: see previous check
+ free(me);
+ return NULL;
+ }
unsigned int *row = me->pixels;
- for (int i=0 ; i<height ; i++)
- {
+ for (int i=0 ; i<height ; i++){
me->rows[i] = row;
row += width;
- }
+ }
me->nrColors = 0;
RGB rgb;
rgb.r = rgb.g = rgb.b = 0;
- for (int i=0; i<256 ; i++)
- {
+ for (int i=0; i<256 ; i++){
me->clut[i] = rgb;
- }
+ }
return me;
}