summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2001-01-05 14:01:36 +0000
committerAlexander Larsson <alexl@src.gnome.org>2001-01-05 14:01:36 +0000
commit30888237b9f69c548527d020ff0763a6efd124b5 (patch)
tree8409bc20e7bbc491022a4cbe64acab655c5d7c9c
parentae89b1e1b17d4e6eb53d7d397dab76a711de6183 (diff)
downloadgdk-pixbuf-30888237b9f69c548527d020ff0763a6efd124b5.tar.gz
free colormap in here. Sync from X port. (gdk_fb_set_colormap): allow the
2001-01-05 Alexander Larsson <alexl@redhat.com> * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free colormap in here. Sync from X port. (gdk_fb_set_colormap): allow the colormap to be NULL if you like. Sync from X port. (gdk_fb_clip_region): Comment out g_warning about empty clip region. This happens now and then, and i don't think it is a bug. (gdk_fb_draw_polygon): Correctly add extra point if startpoint != endpoint. (gdk_fb_draw_lines): Don't draw dashed lines if line_style is GDK_LINE_SOLID. * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has some of the fields filled in at least. * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and miLineArcD is no more, remove it from the function definition.
-rw-r--r--ChangeLog19
-rw-r--r--ChangeLog.pre-2-019
-rw-r--r--ChangeLog.pre-2-1019
-rw-r--r--ChangeLog.pre-2-219
-rw-r--r--ChangeLog.pre-2-419
-rw-r--r--ChangeLog.pre-2-619
-rw-r--r--ChangeLog.pre-2-819
-rw-r--r--gdk/linux-fb/gdkdrawable-fb2.c54
-rw-r--r--gdk/linux-fb/gdkfont-fb.c33
-rw-r--r--gdk/linux-fb/miwideline.c4
10 files changed, 199 insertions, 25 deletions
diff --git a/ChangeLog b/ChangeLog
index c5ca56582..a318592ba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0
index c5ca56582..a318592ba 100644
--- a/ChangeLog.pre-2-0
+++ b/ChangeLog.pre-2-0
@@ -1,3 +1,22 @@
+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index c5ca56582..a318592ba 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,22 @@
+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index c5ca56582..a318592ba 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -1,3 +1,22 @@
+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index c5ca56582..a318592ba 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,22 @@
+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index c5ca56582..a318592ba 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,22 @@
+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index c5ca56582..a318592ba 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,22 @@
+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
diff --git a/gdk/linux-fb/gdkdrawable-fb2.c b/gdk/linux-fb/gdkdrawable-fb2.c
index a0c610484..dd3f45d48 100644
--- a/gdk/linux-fb/gdkdrawable-fb2.c
+++ b/gdk/linux-fb/gdkdrawable-fb2.c
@@ -81,7 +81,7 @@ static void gdk_fb_set_colormap (GdkDrawable *drawable,
GdkColormap *colormap);
static gint gdk_fb_get_depth (GdkDrawable *drawable);
static GdkVisual* gdk_fb_get_visual (GdkDrawable *drawable);
-
+static void gdk_fb_drawable_finalize (GObject *object);
static gpointer parent_class = NULL;
@@ -98,9 +98,12 @@ static void
gdk_drawable_impl_fb_class_init (GdkDrawableFBClass *klass)
{
GdkDrawableClass *drawable_class = GDK_DRAWABLE_CLASS (klass);
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
+ object_class->finalize = gdk_fb_drawable_finalize;
+
drawable_class->create_gc = _gdk_fb_gc_new;
drawable_class->draw_rectangle = gdk_fb_draw_rectangle;
drawable_class->draw_arc = gdk_fb_draw_arc;
@@ -125,6 +128,15 @@ gdk_drawable_impl_fb_class_init (GdkDrawableFBClass *klass)
drawable_class->get_image = _gdk_fb_get_image;
}
+static void
+gdk_fb_drawable_finalize (GObject *object)
+{
+ gdk_drawable_set_colormap (GDK_DRAWABLE (object), NULL);
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+
GType
gdk_drawable_impl_fb_get_type (void)
{
@@ -177,10 +189,15 @@ gdk_fb_set_colormap (GdkDrawable *drawable,
GdkDrawableFBData *private;
private = GDK_DRAWABLE_FBDATA (drawable);
-
- old_cmap = private->colormap;
- private->colormap = gdk_colormap_ref (colormap);
- gdk_colormap_unref (old_cmap);
+
+ if (private->colormap == colormap)
+ return;
+
+ if (private->colormap)
+ gdk_colormap_unref (private->colormap);
+ private->colormap = colormap;
+ if (private->colormap)
+ gdk_colormap_ref (private->colormap);
}
/* Calculates the real clipping region for a drawable, taking into account
@@ -295,8 +312,10 @@ gdk_fb_clip_region (GdkDrawable *drawable,
tmpreg = gdk_region_rectangle (&draw_rect);
gdk_region_intersect (real_clip_region, tmpreg);
gdk_region_destroy (tmpreg);
+ /*
if (!real_clip_region->numRects)
g_warning ("Empty clip region");
+ */
}
}
@@ -814,11 +833,24 @@ gdk_fb_draw_polygon (GdkDrawable *drawable,
miFillPolygon (drawable, gc, 0, 0, npoints, points);
else
{
- GdkPoint *realpts = g_alloca (sizeof(GdkPoint) * (npoints + 1));
+ gint tmp_npoints;
+ GdkPoint *tmp_points;
+
+ if (points[0].x != points[npoints-1].x || points[0].y != points[npoints-1].y)
+ {
+ tmp_npoints = npoints + 1;
+ tmp_points = g_new (GdkPoint, tmp_npoints);
+ memcpy (tmp_points, points, sizeof(GdkPoint) * npoints);
+ tmp_points[npoints].x = points[0].x;
+ tmp_points[npoints].y = points[0].y;
+ }
+ else
+ {
+ tmp_npoints = npoints;
+ tmp_points = points;
+ }
- memcpy (realpts, points, sizeof(GdkPoint) * npoints);
- realpts[npoints] = points[0];
- gdk_fb_draw_lines (drawable, gc, points, npoints);
+ gdk_fb_draw_lines (drawable, gc, tmp_points, tmp_npoints);
}
}
@@ -833,14 +865,14 @@ gdk_fb_draw_lines (GdkDrawable *drawable,
private = GDK_GC_FBDATA (gc);
if (private->values.line_width > 0)
{
- if (private->dash_list)
+ if ((private->values.line_style != GDK_LINE_SOLID) && private->dash_list)
miWideDash (drawable, gc, 0, npoints, points);
else
miWideLine (drawable, gc, 0, npoints, points);
}
else
{
- if (private->dash_list)
+ if ((private->values.line_style != GDK_LINE_SOLID) && private->dash_list)
miZeroDashLine (drawable, gc, 0, npoints, points);
else
miZeroLine (drawable, gc, 0, npoints, points);
diff --git a/gdk/linux-fb/gdkfont-fb.c b/gdk/linux-fb/gdkfont-fb.c
index f47c67268..f05361d32 100644
--- a/gdk/linux-fb/gdkfont-fb.c
+++ b/gdk/linux-fb/gdkfont-fb.c
@@ -38,23 +38,32 @@
#error "We need Freetype 2.0 (beta?)"
#endif
-GdkFont*
-gdk_font_from_description (PangoFontDescription *font_desc)
+
+static GdkFont *
+gdk_fb_bogus_font (gint height)
{
GdkFont *font;
GdkFontPrivateFB *private;
- g_return_val_if_fail (font_desc, NULL);
-
private = g_new0 (GdkFontPrivateFB, 1);
font = (GdkFont *)private;
+
font->type = GDK_FONT_FONT;
- private->size = font_desc->size;
+ font->ascent = height*3/4;
+ font->descent = height/4;
+ private->size = height;
private->base.ref_count = 1;
-
return font;
}
+GdkFont*
+gdk_font_from_description (PangoFontDescription *font_desc)
+{
+ g_return_val_if_fail (font_desc, NULL);
+
+ return gdk_fb_bogus_font (PANGO_PIXELS(font_desc->size));
+}
+
/* ********************* */
#if 0
static GHashTable *font_name_hash = NULL;
@@ -171,13 +180,13 @@ gdk_fontset_load (const gchar *fontset_name)
GdkFont*
gdk_fontset_load (const gchar *fontset_name)
{
- return NULL;
+ return gdk_fb_bogus_font (10);
}
GdkFont *
gdk_font_load (const gchar *font_name)
{
- return NULL;
+ return gdk_fb_bogus_font (10);
}
void
@@ -306,7 +315,7 @@ gdk_text_width (GdkFont *font,
private = (GdkFontPrivateFB*) font;
- return text_length * private->size / (2*PANGO_SCALE);
+ return (text_length * private->size) / 2;
#endif
}
@@ -363,11 +372,11 @@ gdk_text_extents (GdkFont *font,
*rbearing = ((double)mi.bbox.urx) / 1000.0 * private->size;
#else
if(ascent)
- *ascent = 0;
+ *ascent = font->ascent;
if(descent)
- *descent = 0;
+ *descent = font->descent;
if(width)
- *width = 0;
+ *width = gdk_text_width(font, text, text_length);
if(lbearing)
*lbearing = 0;
if(rbearing)
diff --git a/gdk/linux-fb/miwideline.c b/gdk/linux-fb/miwideline.c
index 79b759770..128014cd2 100644
--- a/gdk/linux-fb/miwideline.c
+++ b/gdk/linux-fb/miwideline.c
@@ -532,7 +532,7 @@ miLineJoin (GdkDrawable *pDrawable, GdkGC *pGC, GdkColor *pixel, SpanDataPtr spa
}
static int
-miLineArcI (pDraw, pGC, xorg, yorg, points, widths)
+miLineArcI (pDraw, pGC, xorg, yorg, points)
GdkDrawable* pDraw;
GdkGC* pGC;
int xorg, yorg;
@@ -609,7 +609,7 @@ miLineArcI (pDraw, pGC, xorg, yorg, points, widths)
}
static int
-miLineArcD (pDraw, pGC, xorg, yorg, points, widths,
+miLineArcD (pDraw, pGC, xorg, yorg, points,
edge1, edgey1, edgeleft1, edge2, edgey2, edgeleft2)
GdkDrawable* pDraw;
GdkGC* pGC;