1 /* 2 * Copyright (C) 2006 John Ellis 3 * Copyright (C) 2008 - 2016 The Geeqie Team 4 * 5 * Author: John Ellis 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License along 18 * with this program; if not, write to the Free Software Foundation, Inc., 19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 */ 21 22 #ifndef PAN_VIEW_PAN_ITEM_H 23 #define PAN_VIEW_PAN_ITEM_H 24 25 #include "main.h" 26 #include "pan-types.h" 27 #include "pixbuf-renderer.h" 28 29 void pan_item_free(PanItem *pi); 30 31 void pan_item_set_key(PanItem *pi, const gchar *key); 32 void pan_item_added(PanWindow *pw, PanItem *pi); 33 void pan_item_remove(PanWindow *pw, PanItem *pi); 34 35 // Determine sizes 36 void pan_item_size_by_item(PanItem *pi, PanItem *child, gint border); 37 void pan_item_size_coordinates(PanItem *pi, gint border, gint *w, gint *h); 38 39 // Find items 40 PanItem *pan_item_find_by_key(PanWindow *pw, PanItemType type, const gchar *key); 41 GList *pan_item_find_by_path(PanWindow *pw, PanItemType type, const gchar *path, 42 gboolean ignore_case, gboolean partial); 43 GList *pan_item_find_by_fd(PanWindow *pw, PanItemType type, FileData *fd, 44 gboolean ignore_case, gboolean partial); 45 PanItem *pan_item_find_by_coord(PanWindow *pw, PanItemType type, 46 gint x, gint y, const gchar *key); 47 48 // Item box type 49 PanItem *pan_item_box_new(PanWindow *pw, FileData *fd, gint x, gint y, gint width, gint height, 50 gint border_size, 51 guint8 base_r, guint8 base_g, guint8 base_b, guint8 base_a, 52 guint8 bord_r, guint8 bord_g, guint8 bord_b, guint8 bord_a); 53 void pan_item_box_shadow(PanItem *pi, gint offset, gint fade); 54 gint pan_item_box_draw(PanWindow *pw, PanItem *pi, GdkPixbuf *pixbuf, PixbufRenderer *pr, 55 gint x, gint y, gint width, gint height); 56 57 // Item triangle type 58 PanItem *pan_item_tri_new(PanWindow *pw, FileData *fd, gint x, gint y, gint width, gint height, 59 gint x1, gint y1, gint x2, gint y2, gint x3, gint y3, 60 guint8 r, guint8 g, guint8 b, guint8 a); 61 void pan_item_tri_border(PanItem *pi, gint borders, 62 guint8 r, guint8 g, guint8 b, guint8 a); 63 gint pan_item_tri_draw(PanWindow *pw, PanItem *pi, GdkPixbuf *pixbuf, PixbufRenderer *pr, 64 gint x, gint y, gint width, gint height); 65 66 // Item text type 67 PanItem *pan_item_text_new(PanWindow *pw, gint x, gint y, const gchar *text, 68 PanTextAttrType attr, PanBorderType border, 69 guint8 r, guint8 g, guint8 b, guint8 a); 70 gint pan_item_text_draw(PanWindow *pw, PanItem *pi, GdkPixbuf *pixbuf, PixbufRenderer *pr, 71 gint x, gint y, gint width, gint height); 72 73 // Item thumbnail type 74 PanItem *pan_item_thumb_new(PanWindow *pw, FileData *fd, gint x, gint y); 75 gint pan_item_thumb_draw(PanWindow *pw, PanItem *pi, GdkPixbuf *pixbuf, PixbufRenderer *pr, 76 gint x, gint y, gint width, gint height); 77 78 // Item image type 79 PanItem *pan_item_image_new(PanWindow *pw, FileData *fd, gint x, gint y, gint w, gint h); 80 gint pan_item_image_draw(PanWindow *pw, PanItem *pi, GdkPixbuf *pixbuf, PixbufRenderer *pr, 81 gint x, gint y, gint width, gint height); 82 83 // Alignment 84 typedef struct _PanTextAlignment PanTextAlignment; 85 struct _PanTextAlignment { 86 PanWindow *pw; 87 88 GList *column1; 89 GList *column2; 90 91 gint x; 92 gint y; 93 gchar *key; 94 }; 95 96 PanTextAlignment *pan_text_alignment_new(PanWindow *pw, gint x, gint y, const gchar *key); 97 void pan_text_alignment_free(PanTextAlignment *ta); 98 99 PanItem *pan_text_alignment_add(PanTextAlignment *ta, const gchar *label, const gchar *text); 100 void pan_text_alignment_calc(PanTextAlignment *ta, PanItem *box); 101 102 #endif 103