#ifdef HAVE_WIDGETS
static void
update_widget_face (widget_value* wv,
- struct Lisp_Image_Instance* ii, Lisp_Object domain);
+ Lisp_Image_Instance* ii, Lisp_Object domain);
static void
update_tab_widget_face (widget_value* wv,
- struct Lisp_Image_Instance* ii, Lisp_Object domain);
+ Lisp_Image_Instance* ii, Lisp_Object domain);
#endif
#include "bitmaps.h"
*pixtbl = xnew_array (unsigned long, pixcount);
*npixels = 0;
- /* ### should implement a sort by popularity to assure proper allocation */
+ /* #### should implement a sort by popularity to assure proper allocation */
n = *npixels;
for (i = 0; i < qtable->num_active_colors; i++)
{
static void
-x_print_image_instance (struct Lisp_Image_Instance *p,
+x_print_image_instance (Lisp_Image_Instance *p,
Lisp_Object printcharfun,
int escapeflag)
{
#endif
static void
-x_finalize_image_instance (struct Lisp_Image_Instance *p)
+x_finalize_image_instance (Lisp_Image_Instance *p)
{
if (!p->data)
return;
}
static int
-x_image_instance_equal (struct Lisp_Image_Instance *p1,
- struct Lisp_Image_Instance *p2, int depth)
+x_image_instance_equal (Lisp_Image_Instance *p1,
+ Lisp_Image_Instance *p2, int depth)
{
switch (IMAGE_INSTANCE_TYPE (p1))
{
}
static unsigned long
-x_image_instance_hash (struct Lisp_Image_Instance *p, int depth)
+x_image_instance_hash (Lisp_Image_Instance *p, int depth)
{
switch (IMAGE_INSTANCE_TYPE (p))
{
methods are called. */
static void
-x_initialize_pixmap_image_instance (struct Lisp_Image_Instance *ii,
+x_initialize_pixmap_image_instance (Lisp_Image_Instance *ii,
int slices,
enum image_instance_type type)
{
(XSTRING_BYTE (name, 2) == '/')))))
{
if (!NILP (Ffile_readable_p (name)))
- return name;
+ return Fexpand_file_name (name, Qnil);
else
return Qnil;
}
Use the same code as for `xpm'. */
static void
-init_image_instance_from_x_image (struct Lisp_Image_Instance *ii,
+init_image_instance_from_x_image (Lisp_Image_Instance *ii,
XImage *ximage,
int dest_mask,
Colormap cmap,
}
static void
-image_instance_add_x_image (struct Lisp_Image_Instance *ii,
+image_instance_add_x_image (Lisp_Image_Instance *ii,
XImage *ximage,
int slice,
Lisp_Object instantiator)
}
static void
-x_init_image_instance_from_eimage (struct Lisp_Image_Instance *ii,
+x_init_image_instance_from_eimage (Lisp_Image_Instance *ii,
int width, int height,
int slices,
unsigned char *eimage,
image instance accordingly. */
static void
-init_image_instance_from_xbm_inline (struct Lisp_Image_Instance *ii,
+init_image_instance_from_xbm_inline (Lisp_Image_Instance *ii,
int width, int height,
/* Note that data is in ext-format! */
CONST char *bits,
{
Lisp_Object mask_data = find_keyword_in_vector (instantiator, Q_mask_data);
Lisp_Object mask_file = find_keyword_in_vector (instantiator, Q_mask_file);
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
Pixmap mask = 0;
- CONST char *gcc_may_you_rot_in_hell;
if (!NILP (mask_data))
{
- GET_C_STRING_BINARY_DATA_ALLOCA (XCAR (XCDR (XCDR (mask_data))),
- gcc_may_you_rot_in_hell);
- mask =
- pixmap_from_xbm_inline (IMAGE_INSTANCE_DEVICE (ii),
- XINT (XCAR (mask_data)),
- XINT (XCAR (XCDR (mask_data))),
- (CONST unsigned char *)
- gcc_may_you_rot_in_hell);
+ CONST char *ext_data;
+
+ TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (XCDR (XCDR (mask_data))),
+ C_STRING_ALLOCA, ext_data,
+ Qbinary);
+ mask = pixmap_from_xbm_inline (IMAGE_INSTANCE_DEVICE (ii),
+ XINT (XCAR (mask_data)),
+ XINT (XCAR (XCDR (mask_data))),
+ (CONST unsigned char *) ext_data);
}
init_image_instance_from_xbm_inline (ii, width, height, bits,
int dest_mask, Lisp_Object domain)
{
Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
- CONST char *gcc_go_home;
+ CONST char *ext_data;
assert (!NILP (data));
- GET_C_STRING_BINARY_DATA_ALLOCA (XCAR (XCDR (XCDR (data))),
- gcc_go_home);
+ TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (XCDR (XCDR (data))),
+ C_STRING_ALLOCA, ext_data,
+ Qbinary);
xbm_instantiate_1 (image_instance, instantiator, pointer_fg,
pointer_bg, dest_mask, XINT (XCAR (data)),
- XINT (XCAR (XCDR (data))), gcc_go_home);
+ XINT (XCAR (XCDR (data))), ext_data);
}
\f
int dest_mask, Lisp_Object domain)
{
/* This function can GC */
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
Display *dpy;
assert (!NILP (data));
- GET_C_STRING_BINARY_DATA_ALLOCA (data, dstring);
+ TO_EXTERNAL_FORMAT (LISP_STRING, data,
+ C_STRING_ALLOCA, dstring,
+ Qbinary);
if ((p = strchr (dstring, ':')))
{
if (dest_mask & IMAGE_POINTER_MASK)
{
CONST char *name_ext;
- GET_C_STRING_FILENAME_DATA_ALLOCA (data, name_ext);
+ TO_EXTERNAL_FORMAT (LISP_STRING, data,
+ C_STRING_ALLOCA, name_ext,
+ Qfile_name);
if (XmuCursorNameToIndex (name_ext) != -1)
{
result = alist_to_tagged_vector (Qcursor_font, alist);
{
/* This function can GC */
Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
Display *dpy;
XColor fg, bg;
{
/* This function can GC */
Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
Display *dpy;
int i;
if (!(dest_mask & IMAGE_POINTER_MASK))
incompatible_image_types (instantiator, dest_mask, IMAGE_POINTER_MASK);
- GET_C_STRING_FILENAME_DATA_ALLOCA (data, name_ext);
+ TO_EXTERNAL_FORMAT (LISP_STRING, data,
+ C_STRING_ALLOCA, name_ext,
+ Qfile_name);
if ((i = XmuCursorNameToIndex (name_ext)) == -1)
signal_simple_error ("Unrecognized cursor-font name", data);
x_colorize_image_instance (Lisp_Object image_instance,
Lisp_Object foreground, Lisp_Object background)
{
- struct Lisp_Image_Instance *p;
+ Lisp_Image_Instance *p;
p = XIMAGE_INSTANCE (image_instance);
/* unmap the image if it is a widget. This is used by redisplay via
redisplay_unmap_subwindows */
static void
-x_unmap_subwindow (struct Lisp_Image_Instance *p)
+x_unmap_subwindow (Lisp_Image_Instance *p)
{
if (IMAGE_INSTANCE_TYPE (p) == IMAGE_SUBWINDOW)
{
/* map the subwindow. This is used by redisplay via
redisplay_output_subwindow */
static void
-x_map_subwindow (struct Lisp_Image_Instance *p, int x, int y,
+x_map_subwindow (Lisp_Image_Instance *p, int x, int y,
struct display_glyph_area* dga)
{
if (IMAGE_INSTANCE_TYPE (p) == IMAGE_SUBWINDOW)
/* when you click on a widget you may activate another widget this
needs to be checked and all appropriate widgets updated */
static void
-x_update_subwindow (struct Lisp_Image_Instance *p)
+x_update_subwindow (Lisp_Image_Instance *p)
{
#ifdef HAVE_WIDGETS
if (IMAGE_INSTANCE_TYPE (p) == IMAGE_WIDGET)
int dest_mask, Lisp_Object domain)
{
/* This function can GC */
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
Lisp_Object frame = FW_FRAME (domain);
struct frame* f = XFRAME (frame);
(subwindow, property, data))
{
Atom property_atom;
- struct Lisp_Subwindow *sw;
+ Lisp_Subwindow *sw;
Display *dpy;
CHECK_SUBWINDOW (subwindow);
#endif
static void
-x_resize_subwindow (struct Lisp_Image_Instance* ii, int w, int h)
+x_resize_subwindow (Lisp_Image_Instance* ii, int w, int h)
{
if (IMAGE_INSTANCE_TYPE (ii) == IMAGE_SUBWINDOW)
{
{
Arg al[2];
- if (!XtIsRealized (IMAGE_INSTANCE_X_WIDGET_ID (ii)))
+ if ( !XtIsManaged(IMAGE_INSTANCE_X_WIDGET_ID (ii))
+ ||
+ IMAGE_INSTANCE_X_WIDGET_ID (ii)->core.being_destroyed )
{
Lisp_Object sw;
XSETIMAGE_INSTANCE (sw, ii);
- signal_simple_error ("XEmacs bug: subwindow is not realized", sw);
+ signal_simple_error ("XEmacs bug: subwindow is deleted", sw);
}
XtSetArg (al [0], XtNwidth, (Dimension)w);
/************************************************************************/
static void
-update_widget_face (widget_value* wv, struct Lisp_Image_Instance *ii,
+update_widget_face (widget_value* wv, Lisp_Image_Instance *ii,
Lisp_Object domain)
{
#ifdef LWLIB_WIDGETS_MOTIF
}
static void
-update_tab_widget_face (widget_value* wv, struct Lisp_Image_Instance *ii,
+update_tab_widget_face (widget_value* wv, Lisp_Image_Instance *ii,
Lisp_Object domain)
{
if (wv->contents)
int dest_mask, Lisp_Object domain,
CONST char* type, widget_value* wv)
{
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii), pixel;
struct device* d = XDEVICE (device);
Lisp_Object frame = FW_FRAME (domain);
IMAGE_INSTANCE_TYPE (ii) = IMAGE_WIDGET;
if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii)))
- GET_C_STRING_OS_DATA_ALLOCA (IMAGE_INSTANCE_WIDGET_TEXT (ii), nm);
+ TO_EXTERNAL_FORMAT (LISP_STRING, IMAGE_INSTANCE_WIDGET_TEXT (ii),
+ C_STRING_ALLOCA, nm,
+ Qnative);
ii->data = xnew_and_zero (struct x_subwindow_data);
x_widget_set_property (Lisp_Object image_instance, Lisp_Object prop,
Lisp_Object val)
{
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
/* Modify the text properties of the widget */
if (EQ (prop, Q_text))
char* str;
widget_value* wv = lw_get_all_values (IMAGE_INSTANCE_X_WIDGET_LWID (ii));
CHECK_STRING (val);
- GET_C_STRING_OS_DATA_ALLOCA (val, str);
+ TO_EXTERNAL_FORMAT (LISP_STRING, val,
+ C_STRING_ALLOCA, str,
+ Qnative);
wv->value = str;
lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (ii), wv, False);
}
static Lisp_Object
x_widget_property (Lisp_Object image_instance, Lisp_Object prop)
{
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
/* get the text from a control */
if (EQ (prop, Q_text))
{
widget_value* wv = lw_get_all_values (IMAGE_INSTANCE_X_WIDGET_LWID (ii));
- return build_ext_string (wv->value, FORMAT_OS);
+ return build_ext_string (wv->value, Qnative);
}
return Qunbound;
}
Lisp_Object pointer_fg, Lisp_Object pointer_bg,
int dest_mask, Lisp_Object domain)
{
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
Lisp_Object gui = IMAGE_INSTANCE_WIDGET_ITEM (ii);
Lisp_Object glyph = find_keyword_in_vector (instantiator, Q_image);
widget_value* wv = xmalloc_widget_value ();
pointer_bg, dest_mask, domain, "button", wv);
/* add the image if one was given */
- if (!NILP (glyph) && IMAGE_INSTANCEP (glyph))
+ if (!NILP (glyph) && IMAGE_INSTANCEP (glyph)
+ && IMAGE_INSTANCE_PIXMAP_TYPE_P (XIMAGE_INSTANCE (glyph)))
{
Arg al [2];
int ac =0;
static Lisp_Object
x_button_property (Lisp_Object image_instance, Lisp_Object prop)
{
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
/* check the state of a button */
if (EQ (prop, Q_selected))
{
Lisp_Object pointer_fg, Lisp_Object pointer_bg,
int dest_mask, Lisp_Object domain)
{
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
Lisp_Object gui = IMAGE_INSTANCE_WIDGET_ITEM (ii);
widget_value* wv = xmalloc_widget_value ();
x_progress_gauge_set_property (Lisp_Object image_instance, Lisp_Object prop,
Lisp_Object val)
{
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
if (EQ (prop, Q_percent))
{
Lisp_Object pointer_fg, Lisp_Object pointer_bg,
int dest_mask, Lisp_Object domain)
{
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
Lisp_Object gui = IMAGE_INSTANCE_WIDGET_ITEM (ii);
widget_value* wv = xmalloc_widget_value ();
Lisp_Object pointer_fg, Lisp_Object pointer_bg,
int dest_mask, Lisp_Object domain)
{
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
widget_value * wv = 0;
/* This is not done generically because of sizing problems under
mswindows. */
Lisp_Object pointer_fg, Lisp_Object pointer_bg,
int dest_mask, Lisp_Object domain)
{
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
widget_value * wv =
gui_items_to_widget_values (IMAGE_INSTANCE_WIDGET_ITEMS (ii));
x_tab_control_set_property (Lisp_Object image_instance, Lisp_Object prop,
Lisp_Object val)
{
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
if (EQ (prop, Q_items))
{
Lisp_Object pointer_fg, Lisp_Object pointer_bg,
int dest_mask, Lisp_Object domain)
{
- struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
Lisp_Object gui = IMAGE_INSTANCE_WIDGET_ITEM (ii);
widget_value* wv = xmalloc_widget_value ();
make_int (name##_height), \
make_ext_string (name##_bits, \
sizeof (name##_bits), \
- FORMAT_BINARY))), \
+ Qbinary))), \
Qglobal, Qx, Qnil)
BUILD_GLYPH_INST (Vtruncation_glyph, truncator);