13
0
livetrax/libs/tk/ztk/atkimage.c
Robin Gareus ad51c7c2ba
Localize stripped down gtk2
This is intended mainly for GNU/Linux distros who will remove
GTK2 support in the near future.
2024-01-06 21:52:48 +01:00

239 lines
5.9 KiB
C

/* ATK - Accessibility Toolkit
* Copyright 2001 Sun Microsystems Inc.
*
* This library 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 of the License, or (at your option) any later version.
*
* This 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "config.h"
#include "atkimage.h"
/**
* SECTION:atkimage
* @Short_description: The ATK Interface implemented by components
* which expose image or pixmap content on-screen.
* @Title:AtkImage
*
* #AtkImage should be implemented by #AtkObject subtypes on behalf of
* components which display image/pixmap information onscreen, and
* which provide information (other than just widget borders, etc.)
* via that image content. For instance, icons, buttons with icons,
* toolbar elements, and image viewing panes typically should
* implement #AtkImage.
*
* #AtkImage primarily provides two types of information: coordinate
* information (useful for screen review mode of screenreaders, and
* for use by onscreen magnifiers), and descriptive information. The
* descriptive information is provided for alternative, text-only
* presentation of the most significant information present in the
* image.
*/
GType
atk_image_get_type (void)
{
static GType type = 0;
if (!type) {
static const GTypeInfo tinfo =
{
sizeof (AtkImageIface),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL
};
type = g_type_register_static (G_TYPE_INTERFACE, "AtkImage", &tinfo, 0);
}
return type;
}
/**
* atk_image_get_image_description:
* @image: a #GObject instance that implements AtkImageIface
*
* Get a textual description of this image.
*
* Returns: a string representing the image description
**/
const gchar*
atk_image_get_image_description (AtkImage *image)
{
AtkImageIface *iface;
g_return_val_if_fail (ATK_IS_IMAGE (image), NULL);
iface = ATK_IMAGE_GET_IFACE (image);
if (iface->get_image_description)
{
return (iface->get_image_description) (image);
}
else
{
return NULL;
}
}
/**
* atk_image_get_image_size:
* @image: a #GObject instance that implements AtkImageIface
* @width: filled with the image width, or -1 if the value cannot be obtained.
* @height: filled with the image height, or -1 if the value cannot be obtained.
*
* Get the width and height in pixels for the specified image.
* The values of @width and @height are returned as -1 if the
* values cannot be obtained (for instance, if the object is not onscreen).
**/
void
atk_image_get_image_size (AtkImage *image,
int *width,
int *height)
{
AtkImageIface *iface;
gint local_width, local_height;
gint *real_width, *real_height;
g_return_if_fail (ATK_IS_IMAGE (image));
if (width)
real_width = width;
else
real_width = &local_width;
if (height)
real_height = height;
else
real_height = &local_height;
iface = ATK_IMAGE_GET_IFACE (image);
if (iface->get_image_size)
{
iface->get_image_size (image, real_width, real_height);
}
else
{
*real_width = -1;
*real_height = -1;
}
}
/**
* atk_image_set_image_description:
* @image: a #GObject instance that implements AtkImageIface
* @description: a string description to set for @image
*
* Sets the textual description for this image.
*
* Returns: boolean TRUE, or FALSE if operation could
* not be completed.
**/
gboolean
atk_image_set_image_description (AtkImage *image,
const gchar *description)
{
AtkImageIface *iface;
g_return_val_if_fail (ATK_IS_IMAGE (image), FALSE);
iface = ATK_IMAGE_GET_IFACE (image);
if (iface->set_image_description)
{
return (iface->set_image_description) (image, description);
}
else
{
return FALSE;
}
}
/**
* atk_image_get_image_position:
* @image: a #GObject instance that implements AtkImageIface
* @x: address of #gint to put x coordinate position; otherwise, -1 if value cannot be obtained.
* @y: address of #gint to put y coordinate position; otherwise, -1 if value cannot be obtained.
* @coord_type: specifies whether the coordinates are relative to the screen
* or to the components top level window
*
* Gets the position of the image in the form of a point specifying the
* images top-left corner.
**/
void
atk_image_get_image_position (AtkImage *image,
gint *x,
gint *y,
AtkCoordType coord_type)
{
AtkImageIface *iface;
gint local_x, local_y;
gint *real_x, *real_y;
g_return_if_fail (ATK_IS_IMAGE (image));
if (x)
real_x = x;
else
real_x = &local_x;
if (y)
real_y = y;
else
real_y = &local_y;
iface = ATK_IMAGE_GET_IFACE (image);
if (iface->get_image_position)
{
(iface->get_image_position) (image, real_x, real_y, coord_type);
}
else
{
*real_x = -1;
*real_y = -1;
}
}
/**
* atk_image_get_image_locale:
* @image: An #AtkImage
*
* Since ATK 1.12
*
* Returns: (nullable): a string corresponding to the POSIX
* LC_MESSAGES locale used by the image description, or %NULL if the
* image does not specify a locale.
*
*/
const gchar*
atk_image_get_image_locale (AtkImage *image)
{
AtkImageIface *iface;
g_return_val_if_fail (ATK_IS_IMAGE (image), NULL);
iface = ATK_IMAGE_GET_IFACE (image);
if (iface->get_image_locale)
{
return (iface->get_image_locale) (image);
}
else
{
return NULL;
}
}