summaryrefslogtreecommitdiff
path: root/libnautilus-extensions/nautilus-art-gtk-extensions.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnautilus-extensions/nautilus-art-gtk-extensions.c')
-rw-r--r--libnautilus-extensions/nautilus-art-gtk-extensions.c316
1 files changed, 0 insertions, 316 deletions
diff --git a/libnautilus-extensions/nautilus-art-gtk-extensions.c b/libnautilus-extensions/nautilus-art-gtk-extensions.c
deleted file mode 100644
index ce3cb2c3f..000000000
--- a/libnautilus-extensions/nautilus-art-gtk-extensions.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-
-/* nautilus-art-gtk-extensions.c - Access gtk/gdk attributes as libart rectangles.
-
- Copyright (C) 2000 Eazel, Inc.
-
- The Gnome Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The Gnome Library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Authors: Ramiro Estrugo <ramiro@eazel.com>
-*/
-
-#include <config.h>
-
-#include "nautilus-art-gtk-extensions.h"
-
-/**
- * nautilus_gdk_rectangle_to_art_irect:
- * @gdk_rectangle: The source GdkRectangle.
- *
- * Return value: An ArtIRect representation of the GdkRectangle.
- *
- * This is a very simple conversion of rectangles from the Gdk to the Libart
- * universe. This is useful in code that does clipping (or other operations)
- * using libart and has a GdkRectangle to work with - for example expose_event()
- * in GtkWidget's.
- */
-ArtIRect
-nautilus_gdk_rectangle_to_art_irect (const GdkRectangle *gdk_rectangle)
-{
- ArtIRect irect;
-
- g_return_val_if_fail (gdk_rectangle != NULL, NAUTILUS_ART_IRECT_EMPTY);
-
- irect.x0 = gdk_rectangle->x;
- irect.y0 = gdk_rectangle->y;
- irect.x1 = irect.x0 + (int) gdk_rectangle->width;
- irect.y1 = irect.y0 + (int) gdk_rectangle->height;
-
- return irect;
-}
-
-/**
- * nautilus_screen_get_dimensions:
- *
- * Return value: The screen dimensions.
- *
- */
-NautilusDimensions
-nautilus_screen_get_dimensions (void)
-{
- NautilusDimensions screen_dimensions;
-
- screen_dimensions.width = gdk_screen_width ();
- screen_dimensions.height = gdk_screen_height ();
-
- g_assert (screen_dimensions.width > 0);
- g_assert (screen_dimensions.height > 0);
-
- return screen_dimensions;
-}
-
-/**
- * nautilus_gdk_window_get_bounds:
- * @gdk_window: The source GdkWindow.
- *
- * Return value: An ArtIRect representation of the given GdkWindow's geometry
- * relative to its parent in the Gdk window hierarchy.
- *
- */
-ArtIRect
-nautilus_gdk_window_get_bounds (const GdkWindow *gdk_window)
-{
- ArtIRect bounds;
- int width;
- int height;
-
- g_return_val_if_fail (gdk_window != NULL, NAUTILUS_ART_IRECT_EMPTY);
-
- gdk_window_get_position ((GdkWindow *) gdk_window, &bounds.x0, &bounds.y0);
- gdk_window_get_size ((GdkWindow *) gdk_window, &width, &height);
-
- bounds.x1 = bounds.x0 + width;
- bounds.y1 = bounds.y0 + height;
-
- return bounds;
-}
-
-/**
- * nautilus_gdk_window_get_bounds:
- * @gdk_window: The source GdkWindow.
- *
- * Return value: An ArtIRect representation of the given GdkWindow's geometry
- * relative to the screen.
- *
- */
-ArtIRect
-nautilus_gdk_window_get_screen_relative_bounds (const GdkWindow *gdk_window)
-{
- ArtIRect screen_bounds;
- int width;
- int height;
-
- g_return_val_if_fail (gdk_window != NULL, NAUTILUS_ART_IRECT_EMPTY);
-
- if (!gdk_window_get_origin ((GdkWindow *) gdk_window,
- &screen_bounds.x0,
- &screen_bounds.y0)) {
- return NAUTILUS_ART_IRECT_EMPTY;
- }
-
- gdk_window_get_size ((GdkWindow *) gdk_window, &width, &height);
-
- screen_bounds.x1 = screen_bounds.x0 + width;
- screen_bounds.y1 = screen_bounds.y0 + height;
-
- return screen_bounds;
-}
-
-/**
- * nautilus_gtk_widget_get_bounds:
- * @gtk_widget: The source GtkWidget.
- *
- * Return value: An ArtIRect representation of the given GtkWidget's geometry
- * relative to its parent. In the Gtk universe this is known as "allocation."
- *
- */
-ArtIRect
-nautilus_gtk_widget_get_bounds (const GtkWidget *gtk_widget)
-{
- ArtIRect bounds;
-
- g_return_val_if_fail (GTK_IS_WIDGET (gtk_widget), NAUTILUS_ART_IRECT_EMPTY);
-
- nautilus_art_irect_assign (&bounds,
- gtk_widget->allocation.x,
- gtk_widget->allocation.y,
- (int) gtk_widget->allocation.width,
- (int) gtk_widget->allocation.height);
-
- return bounds;
-}
-
-/**
- * nautilus_gtk_widget_get_dimensions:
- * @gtk_widget: The source GtkWidget.
- *
- * Return value: The widget's dimensions. The returned dimensions are only valid
- * after the widget's geometry has been "allocated" by its container.
- */
-NautilusDimensions
-nautilus_gtk_widget_get_dimensions (const GtkWidget *gtk_widget)
-{
- NautilusDimensions dimensions;
-
- g_return_val_if_fail (GTK_IS_WIDGET (gtk_widget), NAUTILUS_DIMENSIONS_EMPTY);
-
- dimensions.width = (int) gtk_widget->allocation.width;
- dimensions.height = (int) gtk_widget->allocation.height;
-
- return dimensions;
-}
-
-/**
- * nautilus_gtk_widget_get_preferred_dimensions:
- * @gtk_widget: The source GtkWidget.
- *
- * Return value: The widget's preferred dimensions. The preferred dimensions are
- * computed by calling the widget's 'size_request' method and thus
- * could potentially be expensive for complicated widgets.
- */
-NautilusDimensions
-nautilus_gtk_widget_get_preferred_dimensions (const GtkWidget *gtk_widget)
-{
- GtkRequisition requisition;
- NautilusDimensions preferred_dimensions;
-
- g_return_val_if_fail (GTK_IS_WIDGET (gtk_widget), NAUTILUS_DIMENSIONS_EMPTY);
-
- gtk_widget_size_request (GTK_WIDGET (gtk_widget), &requisition);
-
- preferred_dimensions.width = (int) requisition.width;
- preferred_dimensions.height = (int) requisition.height;
-
- return preferred_dimensions;
-}
-
-/**
- * nautilus_gdk_window_clip_dirty_area_to_screen:
- * @gdk_window: The GdkWindow that the damage occured on.
- * @dirty_area: The dirty area as an ArtIRect.
- *
- * Return value: An ArtIRect of the dirty area clipped to the screen.
- *
- * This function is useful to do less work in expose_event() GtkWidget methods.
- * It also ensures that any drawing that the widget does is actually onscreen.
- */
-ArtIRect
-nautilus_gdk_window_clip_dirty_area_to_screen (const GdkWindow *gdk_window,
- const ArtIRect *dirty_area)
-{
- ArtIRect clipped;
- NautilusDimensions screen_dimensions;
- ArtIRect bounds;
- ArtIRect screen_relative_bounds;
- int dirty_width;
- int dirty_height;
-
- g_return_val_if_fail (gdk_window != NULL, NAUTILUS_ART_IRECT_EMPTY);
- g_return_val_if_fail (dirty_area != NULL, NAUTILUS_ART_IRECT_EMPTY);
-
- dirty_width = dirty_area->x1 - dirty_area->x0;
- dirty_height = dirty_area->y1 - dirty_area->y0;
-
- g_return_val_if_fail (dirty_width > 0, NAUTILUS_ART_IRECT_EMPTY);
- g_return_val_if_fail (dirty_height > 0, NAUTILUS_ART_IRECT_EMPTY);
-
- screen_dimensions = nautilus_screen_get_dimensions ();
- bounds = nautilus_gdk_window_get_bounds (gdk_window);
- screen_relative_bounds = nautilus_gdk_window_get_screen_relative_bounds (gdk_window);
-
- /* Window is obscured by left edge of screen */
- if ((screen_relative_bounds.x0 + dirty_area->x0) < 0) {
- int clipped_width = screen_relative_bounds.x0 + dirty_area->x0 + dirty_width;
- clipped.x0 = dirty_area->x0 + dirty_width - clipped_width;
- clipped.x1 = clipped.x0 + clipped_width;
- } else {
- clipped.x0 = dirty_area->x0;
- clipped.x1 = clipped.x0 + dirty_width;
- }
-
- /* Window is obscured by right edge of screen */
- if (screen_relative_bounds.x1 > screen_dimensions.width) {
- int obscured_width;
-
- obscured_width =
- screen_relative_bounds.x0 + dirty_area->x0 + dirty_width - screen_dimensions.width;
-
- if (obscured_width > 0) {
- clipped.x1 -= obscured_width;
- }
- }
-
- /* Window is obscured by top edge of screen */
- if ((screen_relative_bounds.y0 + dirty_area->y0) < 0) {
- int clipped_height = screen_relative_bounds.y0 + dirty_area->y0 + dirty_height;
- clipped.y0 = dirty_area->y0 + dirty_height - clipped_height;
- clipped.y1 = clipped.y0 + clipped_height;
- } else {
- clipped.y0 = dirty_area->y0;
- clipped.y1 = clipped.y0 + dirty_height;
- }
-
- /* Window is obscured by bottom edge of screen */
- if (screen_relative_bounds.y1 > screen_dimensions.height) {
- int obscured_height;
-
- obscured_height =
- screen_relative_bounds.y0 + dirty_area->y0 + dirty_height - screen_dimensions.height;
-
- if (obscured_height > 0) {
- clipped.y1 -= obscured_height;
- }
- }
-
- if (art_irect_empty (&clipped)) {
- clipped = NAUTILUS_ART_IRECT_EMPTY;
- }
-
- return clipped;
-}
-
-GdkRectangle
-nautilus_art_irect_to_gdk_rectangle (const ArtIRect *irect)
-{
- GdkRectangle gdk_rect;
-
- gdk_rect.x = 0;
- gdk_rect.y = 0;
- gdk_rect.width = 0;
- gdk_rect.height = 0;
-
- g_return_val_if_fail (irect != NULL, gdk_rect);
-
- gdk_rect.x = irect->x0;
- gdk_rect.y = irect->y0;
- gdk_rect.width = nautilus_art_irect_get_width (irect);
- gdk_rect.height = nautilus_art_irect_get_height (irect);
-
- return gdk_rect;
-}
-
-NautilusDimensions
-nautilus_gdk_window_get_dimensions (const GdkWindow *gdk_window)
-{
- NautilusDimensions dimensions;
-
- g_return_val_if_fail (gdk_window != NULL, NAUTILUS_DIMENSIONS_EMPTY);
-
- gdk_window_get_size ((GdkWindow *) gdk_window, &dimensions.width, &dimensions.height);
-
- return dimensions;
-}
-