#include <glib.h>
#include <gtk/gtk.h>
-#include <librsvg/rsvg.h>
#include <string.h>
#include <dirent.h>
+#ifdef HAVE_SVG
+#include <librsvg/rsvg.h>
+#include <math.h>
+#endif
#include "defs.h"
#include "stock_pixmap.h"
#include "pixmaps/down_arrow.xpm"
#include "pixmaps/up_arrow.xpm"
#include "pixmaps/exec.xpm"
-#include "pixmaps/mail.xpm"
+#include "pixmaps/mail_draft.xpm"
#include "pixmaps/mail_attach.xpm"
#include "pixmaps/mail_compose.xpm"
#include "pixmaps/mail_forward.xpm"
+#include "pixmaps/mail_privacy_encrypted.xpm"
+#include "pixmaps/mail_privacy_signed.xpm"
#include "pixmaps/mail_receive.xpm"
#include "pixmaps/mail_receive_all.xpm"
#include "pixmaps/mail_reply.xpm"
#include "pixmaps/mime_calendar.xpm"
#include "pixmaps/mime_pgpsig.xpm"
#include "pixmaps/printer.xpm"
+#include "pixmaps/printer_btn.xpm"
#include "pixmaps/privacy_signed.xpm"
#include "pixmaps/privacy_passed.xpm"
#include "pixmaps/privacy_failed.xpm"
{linewrapcurrent_xpm , NULL, NULL, "linewrapcurrent", NULL, NULL},
{linewrap_xpm , NULL, NULL, "linewrap", NULL, NULL},
{locked_xpm , NULL, NULL, "locked", NULL, NULL},
- {mail_xpm , NULL, NULL, "mail", NULL, NULL},
+ {mail_draft_xpm , NULL, NULL, "mail_draft", NULL, NULL},
{mail_attach_xpm , NULL, NULL, "mail_attach", NULL, NULL},
{mail_compose_xpm , NULL, NULL, "mail_compose", NULL, NULL},
{mail_forward_xpm , NULL, NULL, "mail_forward", NULL, NULL},
+ {mail_privacy_encrypted_xpm , NULL, NULL, "mail_privacy_encrypted", NULL, NULL},
+ {mail_privacy_signed_xpm , NULL, NULL, "mail_privacy_signed", NULL, NULL},
{mail_receive_xpm , NULL, NULL, "mail_receive", NULL, NULL},
{mail_receive_all_xpm , NULL, NULL, "mail_receive_all", NULL, NULL},
{mail_reply_xpm , NULL, NULL, "mail_reply", NULL, NULL},
{mime_ps_xpm , NULL, NULL, "mime_ps", NULL, NULL},
{mime_calendar_xpm , NULL, NULL, "mime_calendar", NULL, NULL},
{mime_pgpsig_xpm , NULL, NULL, "mime_pgpsig", NULL, NULL},
+ {printer_btn_xpm , NULL, NULL, "printer_btn", NULL, NULL},
{printer_xpm , NULL, NULL, "printer", NULL, NULL},
{privacy_signed_xpm , NULL, NULL, "privacy_signed", NULL, NULL},
{privacy_passed_xpm , NULL, NULL, "privacy_passed", NULL, NULL},
cm_return_val_if_fail(filename != NULL, NULL);
cm_return_val_if_fail(icondata != NULL, NULL);
- if (sscanf((icondata->data)[0], "%d %d ", &width, &height) != 2) {
- g_warning("failed reading icondata width and height");
- return NULL;
- }
-
/* load SVG file */
handle = rsvg_handle_new_from_file(filename, error);
if (handle == NULL) {
(*error)->message, (*error)->code);
return NULL;
}
+
+ /* scale dimensions */
+ if (prefs_common.enable_pixmap_scaling) {
+ /* default is pixmap icon size */
+ if (sscanf((icondata->data)[0], "%d %d ", &width, &height) != 2) {
+ g_warning("failed reading icondata width and height");
+ return NULL;
+ }
+ /* which can be modified by some factor */
+ if (prefs_common.pixmap_scaling_ppi > 0) {
+ gdouble factor = (gdouble) prefs_common.pixmap_scaling_ppi / MIN_PPI;
+ width = (int) floor(factor * width);
+ height = (int) floor(factor * height);
+ }
+ } else { /* render using SVG size */
+ RsvgDimensionData dimension;
+
+ rsvg_handle_get_dimensions (handle, &dimension);
+ width = dimension.width;
+ height = dimension.height;
+ }
+
/* create drawing context */
surface = cairo_image_surface_create(
alpha? CAIRO_FORMAT_ARGB32: CAIRO_FORMAT_RGB24,
GError *err = NULL;
#ifdef HAVE_SVG
if (!strncmp(extension[i], ".svg", 4)) {
- pix = pixbuf_from_svg_like_icon(icon_file_name, &err, pix_d, TRUE);
+ pix = pixbuf_from_svg_like_icon(icon_file_name, &err, pix_d,
+ prefs_common.enable_alpha_svg);
} else {
pix = gdk_pixbuf_new_from_file(icon_file_name, &err);
}
{
GList *ptr;
+ cm_return_if_fail(list != NULL);
+
for (ptr = g_list_first(list); ptr != NULL; ptr = g_list_next(ptr))
g_free(ptr->data);
g_list_free(list);
}
+void stock_pixmap_invalidate_all_icons(void)
+{
+ StockPixmapData *pix_d;
+ int i = 0;
+
+ while (i < N_STOCK_PIXMAPS) {
+ pix_d = &pixmaps[i];
+ if (pix_d->pixbuf) {
+ g_object_unref(G_OBJECT(pix_d->pixbuf));
+ pix_d->pixbuf = NULL;
+ }
+ if (pix_d->pixmap) {
+ g_object_unref(G_OBJECT(pix_d->pixmap));
+ pix_d->pixmap = NULL;
+ }
+ i++;
+ }
+}
+
gchar *stock_pixmap_get_name (StockPixmap icon)
{
if (icon >= N_STOCK_PIXMAPS)