*----------------------------------------------------------------------------
*/
+
typedef struct _OverlayStateData OverlayStateData;
struct _OverlayStateData {
ImageWindow *imd;
ImageState changed_states;
- gint show_info;
- gint show_status;
+ OsdShowFlags show;
gint ovl_info;
void image_osd_toggle(ImageWindow *imd)
{
- gint info;
+ OsdShowFlags show;
- if (image_osd_get(imd, &info, NULL) && info)
+ if (image_osd_get(imd, &show) && show & OSD_SHOW_INFO)
{
if (image_osd_histogram_onoff_status(imd))
{
}
else
{
- image_osd_set(imd, FALSE, FALSE);
+ image_osd_set(imd, OSD_SHOW_NOTHING);
}
}
else
{
- image_osd_set(imd, TRUE, TRUE);
+ image_osd_set(imd, OSD_SHOW_INFO | OSD_SHOW_STATUS);
image_osd_icon(imd, IMAGE_OSD_ICON, -1);
image_osd_histogram_onoff_toggle(imd, 1);
image_osd_update(imd);
osd->imd->overlay_show_zoom = FALSE;
- if (osd->show_info)
+ if (osd->show & OSD_SHOW_INFO)
{
if (osd->changed_states & IMAGE_STATE_IMAGE)
{
}
}
- if (osd->show_status)
+ if (osd->show & OSD_SHOW_STATUS)
{
gint i;
image_osd_free(osd);
}
-static void image_osd_enable(ImageWindow *imd, gint info, gint status)
+static void image_osd_enable(ImageWindow *imd, OsdShowFlags show)
{
OverlayStateData *osd;
image_set_state_func(osd->imd, image_osd_state_cb, osd);
}
- if (osd->show_info != info ||
- osd->show_status != status)
- {
- osd->show_info = info;
- osd->show_status = status;
-
+ if (show != osd->show)
image_osd_update_schedule(osd, TRUE);
- }
+
+ osd->show = show;
}
-void image_osd_set(ImageWindow *imd, gint info, gint status)
+void image_osd_set(ImageWindow *imd, OsdShowFlags show)
{
if (!imd) return;
- if (!info && !status)
+ if (show == OSD_SHOW_NOTHING)
{
image_osd_remove(imd);
return;
}
- image_osd_enable(imd, info, status);
+ image_osd_enable(imd, show);
}
-gint image_osd_get(ImageWindow *imd, gint *info, gint *status)
+gint image_osd_get(ImageWindow *imd, OsdShowFlags *show)
{
OverlayStateData *osd;
osd = g_object_get_data(G_OBJECT(imd->pr), "IMAGE_OVERLAY_DATA");
if (!osd) return FALSE;
- if (info) *info = osd->show_info;
- if (status) *status = osd->show_status;
+ if (show) *show = osd->show;
return TRUE;
}
IMAGE_OSD_COUNT
} ImageOSDFlag;
+typedef enum {
+ OSD_SHOW_NOTHING = 0,
+ OSD_SHOW_INFO = 1 << 0,
+ OSD_SHOW_STATUS = 1 << 1,
+ OSD_SHOW_HISTOGRAM = 1 << 2
+} OsdShowFlags;
+
void set_default_image_overlay_template_string(ConfOptions *options);
-void image_osd_set(ImageWindow *imd, gint info, gint status);
-gint image_osd_get(ImageWindow *imd, gint *info, gint *status);
+void image_osd_set(ImageWindow *imd, OsdShowFlags show);
+gint image_osd_get(ImageWindow *imd, OsdShowFlags *show);
void image_osd_update(ImageWindow *imd);
if (vw->fs)
{
- if (image_osd_get(vw->fs->imd, NULL, NULL))
+ if (image_osd_get(vw->fs->imd, NULL))
{
- image_osd_set(vw->imd, TRUE, TRUE);
+ image_osd_set(vw->imd, OSD_SHOW_INFO | OSD_SHOW_STATUS);
}
fullscreen_stop(vw->fs);
if (vw->ss) vw->ss->imd = vw->fs->imd;
- if (image_osd_get(vw->imd, NULL, NULL))
+ if (image_osd_get(vw->imd, NULL))
{
- image_osd_set(vw->imd, FALSE, FALSE);
- image_osd_set(vw->fs->imd, TRUE, TRUE);
+ image_osd_set(vw->imd, OSD_SHOW_NOTHING);
+ image_osd_set(vw->fs->imd, OSD_SHOW_INFO | OSD_SHOW_STATUS);
}
}
}
if (lw->tools) gtk_widget_set_sensitive(lw->tools, FALSE);
#endif
- if (image_osd_get(lw->full_screen->normal_imd, NULL, NULL))
+ if (image_osd_get(lw->full_screen->normal_imd, NULL))
{
- image_osd_set(lw->image, TRUE, TRUE);
- image_osd_set(lw->full_screen->normal_imd, FALSE, FALSE);
+ image_osd_set(lw->image, OSD_SHOW_INFO | OSD_SHOW_STATUS);
+ image_osd_set(lw->full_screen->normal_imd, OSD_SHOW_NOTHING);
}
}
if (!layout_valid(&lw)) return;
if (!lw->full_screen) return;
- if (image_osd_get(lw->image, NULL, NULL))
+ if (image_osd_get(lw->image, NULL))
{
- image_osd_set(lw->full_screen->normal_imd, FALSE, TRUE);
+ image_osd_set(lw->full_screen->normal_imd, OSD_SHOW_STATUS);
}
fullscreen_stop(lw->full_screen);
layout_geometry_get(NULL, &options->layout.main_window.x, &options->layout.main_window.y,
&options->layout.main_window.w, &options->layout.main_window.h);
}
- options->image_overlay.common.enabled = image_osd_get(lw->image, NULL, NULL);
+ options->image_overlay.common.enabled = image_osd_get(lw->image, NULL);
}
layout_geometry_get_dividers(NULL, &options->layout.main_window.hdivider_pos, &options->layout.main_window.vdivider_pos);
collection_get_first(first_collection));
}
}
- image_osd_set(lw->image, FALSE, (options->image_overlay.common.show_at_startup || options->image_overlay.common.enabled));
+
+ image_osd_set(lw->image, (options->image_overlay.common.show_at_startup || options->image_overlay.common.enabled) ? OSD_SHOW_INFO : OSD_SHOW_NOTHING);
g_free(geometry);
g_free(cmd_path);