Prima

 view release on metacpan or  search on metacpan

include/unix/guts.h  view on Meta::CPAN

#define PLAINTEXT_MIME              pguts->atoms[AI_PLAINTEXT_MIME             ]
#define NET_WM_ICON                 pguts->atoms[AI_NET_WM_ICON                ]
#define NET_FRAME_EXTENTS           pguts->atoms[AI_NET_FRAME_EXTENTS          ]
#define NET_WM_STATE_FULLSCREEN     pguts->atoms[AI_NET_WM_STATE_FULLSCREEN    ]

#define DEBUG_FONTS 0x01
#define DEBUG_CLIP  0x02
#define DEBUG_EVENT 0x04
#define DEBUG_MISC  0x08
#define DEBUG_COLOR 0x10
#define DEBUG_XRDB  0x20
#define DEBUG_ALL   0x3f
#define _debug prima_debug
extern int
prima_debug( const char *format, ...);
#define Fdebug if (pguts->debug & DEBUG_FONTS) _debug
#define Cdebug if (pguts->debug & DEBUG_CLIP) _debug
#define Edebug if (pguts->debug & DEBUG_EVENT) _debug
#define Mdebug if (pguts->debug & DEBUG_MISC) _debug
#define Pdebug if (pguts->debug & DEBUG_COLOR) _debug
#define Xdebug if (pguts->debug & DEBUG_XRDB) _debug
#define _F_DEBUG_PITCH(x) ((x==fpDefault)?"default":(x==fpFixed?"fixed":"variable"))
#define _F_DEBUG_STYLE(x) prima_font_debug_style(x)

typedef struct
{
	unsigned int red_shift, green_shift, blue_shift, alpha_shift;
	unsigned int red_range, green_range, blue_range, alpha_range;
	unsigned int red_mask,  green_mask,  blue_mask,  alpha_mask;
} RGBABitDescription, *PRGBABitDescription;

#define DEV_R(descr,val) (((((uint32_t)(val)) << (descr)->red_range  ) >> 8) << (descr)->red_shift)
#define DEV_G(descr,val) (((((uint32_t)(val)) << (descr)->green_range) >> 8) << (descr)->green_shift)
#define DEV_B(descr,val) (((((uint32_t)(val)) << (descr)->blue_range ) >> 8) << (descr)->blue_shift )
#define DEV_A(descr,val) (((((uint32_t)(val)) << (descr)->alpha_range) >> 8) << (descr)->alpha_shift)
#define DEV_RGB(descr,r,g,b)        ( DEV_R(descr,r) | DEV_G(descr,g) | DEV_B(descr,b) )
#define DEV_RGBA(descr,r,g,b,a)     ( DEV_RGB(descr,r,g,b) | DEV_A(descr,a) )
#define COLOR2DEV_RGB(descr,color)  ( DEV_RGB(descr,COLOR_R(color),COLOR_G(color),COLOR_B(color) ) )
#define PALETTE2DEV_RGB(descr,p)  ( DEV_RGB(descr,p.r,p.g,p.b) )
#define COLOR2DEV_RGBA(descr,color,alpha) ( DEV_RGBA(descr,COLOR_R(color),COLOR_G(color),COLOR_B(color),alpha ) )

typedef struct
{
	int status; /* -1 not ok to use, 0 not initialized, 1, ok to use */
	Point hot_spot;
	Cursor cursor;
	Pixmap xor;
	Pixmap and;
#ifdef HAVE_X11_XCURSOR_XCURSOR_H
	XcursorImage * xcursor;
#endif
} CustomPointer;

#define MAX_UNICODE_HEX_LENGTH 6

typedef struct _UnixGuts
{
	/* Event management */
	Time                         click_time_frame;
	Time                         double_click_time_frame;
	PHash                        clipboards;
	PHash                        clipboard_xfers;
	Atom *                       clipboard_formats;
	int                          clipboard_formats_count;
	long                         clipboard_event_timeout;
	fd_set                       excpt_set;
	PList                        files;
	long                         handled_events;
	XButtonEvent                 last_button_event;
	XButtonEvent                 last_click;
	unsigned int                 last_mouseclick_number;
	Time                         last_time;
	int (*                       main_error_handler   )(Display*,XErrorEvent*);
	int                          max_fd;
	int                          modal_count;
	TAILQ_HEAD(,pending_event)   peventq;
	fd_set                       read_set;
	long                         total_events;
	long                         skipped_events;
	long                         unhandled_events;
	fd_set                       write_set;
	/* Graphics */
	struct gc_head               bitmap_gc_pool;
	struct gc_head               screen_gc_pool;
	struct gc_head               argb_gc_pool;
	GC                                   menugc;
	TAILQ_HEAD(,_drawable_sys_data)      paintq;
	PHash                                ximages;
	/* Font management */
	PHash                        font_hash;
	PFontInfo                    font_info;
	char                       **font_names;
	int                          n_fonts;
	XFontStruct                 *pointer_font;
	Bool                         default_font_ok;
	Font                         default_font;
	Font                         default_menu_font;
	Font                         default_widget_font;
	Font                         default_msg_font;
	Font                         default_caption_font;
	int                          no_scaled_fonts;
	/* Resource management */
	XrmDatabase                  db;
	XrmQuark                     qBlinkinvisibletime;
	XrmQuark                     qblinkinvisibletime;
	XrmQuark                     qBlinkvisibletime;
	XrmQuark                     qblinkvisibletime;
	XrmQuark                     qClicktimeframe;
	XrmQuark                     qclicktimeframe;
	XrmQuark                     qDoubleclicktimeframe;
	XrmQuark                     qdoubleclicktimeframe;
	XrmQuark                     qString;
	XrmQuark                     qWheeldown;
	XrmQuark                     qwheeldown;
	XrmQuark                     qWheelup;
	XrmQuark                     qwheelup;
	XrmQuark                     qSubmenudelay;
	XrmQuark                     qsubmenudelay;
	XrmQuark                     qScrollfirst;
	XrmQuark                     qscrollfirst;
	XrmQuark                     qScrollnext;
	XrmQuark                     qscrollnext;
	/* Timers & cursors */
	unsigned int                 cursor_height;
	Point                        cursor_pixmap_size;

include/unix/guts.h  view on Meta::CPAN

	struct MsgDlg               *message_boxes;
	XWindow                      grab_redirect;
	Handle                       grab_widget;
	Point                        grab_translate_mouse;
	Handle                       grab_confine;
	int                          scroll_first;
	int                          scroll_next;
	Handle                       currentMenu;
	Time                         currentFocusTime;
	Handle                       unfocusedMenu;
	int                          menu_timeout;
	XWindow                      root;
	XVisualInfo                  visual;
	int                          visualClass;
	XVisualInfo                  argb_visual;
#ifdef HAVE_X11_EXTENSIONS_XRENDER_H
	XRenderPictFormat *          xrender_display_format;
	XRenderPictFormat *          xrender_argb32_format;
	XRenderPictFormat *          xrender_a8_format;
	XRenderPictFormat *          xrender_a1_format;
#endif
	Bool                         xrender_pen_dirty;
	MainColorEntry *             palette;
	int                          mappingPlace[256];
	unsigned long                monochromeMap[2];
	int                          palSize;
	int                          localPalSize;
	int *                        systemColorMap;
	int                          systemColorMapSize;
	int                          colorCubeRib;
	Bool                         dynamicColors;
	Bool                         grayScale;
	Bool                         useDithering;
	Bool                         privateColormap;
	Colormap                     defaultColormap;
	Colormap                     argbColormap;
	FillPattern *                ditherPatterns;
	Point                        displaySize;
	long                         wm_event_timeout;
	RGBABitDescription           screen_bits;
	RGBABitDescription           argb_bits;
	Point                        ellipseDivergence;
	int                          appLock;
	XGCValues                    cursor_gcv;
	TimerSysData                 sys_timers[ LAST_SYS_TIMER - FIRST_SYS_TIMER + 1];
	Bool                         applicationClose;
	char                         locale[32];
	XFontStruct *                font_abc_nil_hack;
	Atom                         atoms[AI_count];
	XTextProperty                hostname;
	unsigned int			debug;
	Bool                         icccm_only;
	Bool                         net_wm_maximization;
	int                          net_wm_maximize_HORZ_vs_HORIZ;
	Bool                         net_wm_fullscreen;
	int                          use_gtk;
	int                          use_quartz;
	Bool                         use_harfbuzz;
	Bool                         is_xwayland;
	/* DND: Common */
	Handle                       xdnd_clipboard;
	int                          xdnd_disabled;
	/* DND: Receiver */
	Handle                       xdndr_receiver, xdndr_widget, xdndr_last_target;
	XWindow                      xdndr_source;
	long                         xdndr_timestamp;
	int                          xdndr_version, xdndr_last_action, xdndr_action_list_cache;
	Bool                         xdndr_last_drop_response;
	Box                          xdndr_suppress_events_within; /* in prima coordinates */
	/* DND: Sender */
	Handle                       xdnds_widget;
	XWindow                      xdnds_sender, xdnds_target;
	int                          xdnds_version, xdnds_last_action, xdnds_last_action_response;
	Bool                         xdnds_last_drop_response, xdnds_escape_key, xdnds_finished;
	Bool                         xdnds_default_pointers;
	Box                          xdnds_suppress_events_within; /* in root coordinates */

	CustomPointer                xdnd_pointers[5]; /* none,copy,link,move,ask */

	int                          unicode_hex_input_flags;
	char                         unicode_hex_input_buffer[MAX_UNICODE_HEX_LENGTH + 1];

	Bool                         application_stop_signal;

	Bool                         use_xim;
	XIM                          xim;
	XIC                          xic;
	char *                       xic_buffer;
	unsigned int                 xic_bufsize;
} UnixGuts;

extern UnixGuts  guts;
extern UnixGuts* pguts;

#define XCHECKPOINT						\
	{							\
		pguts-> ri[ pguts-> ri_head]. line = __LINE__;			\
		pguts-> ri[ pguts-> ri_head]. file = __FILE__;			\
		pguts-> ri[ pguts-> ri_head]. request = NextRequest(DISP);	\
		pguts-> ri_head++;						\
		if ( pguts-> ri_head >= REQUEST_RING_SIZE)			\
			pguts-> ri_head = 0;					\
		if ( pguts-> ri_tail == pguts-> ri_head) {			\
			pguts-> ri_tail++;					\
			if ( pguts-> ri_tail >= REQUEST_RING_SIZE)		\
				pguts-> ri_tail = 0;				\
		}								\
	}

#define APC_BAD_SIZE INT_MAX
#define APC_BAD_ORIGIN INT_MAX


#define XT_IS_APPLICATION(x)    ((x)->type.application)
#define XT_IS_BITMAP(x)         ((x)->type.bitmap)
#define XT_IS_DBM(x)            ((x)->type.dbm)
#define XT_IS_DRAWABLE(x)       ((x)->type.drawable)
#define XT_IS_ICON(x)           ((x)->type.icon)
#define XT_IS_IMAGE(x)          ((x)->type.image)
#define XT_IS_MENU(x)           ((x)->type.menu)
#define XT_IS_PIXMAP(x)         ((x)->type.pixmap)

include/unix/guts.h  view on Meta::CPAN

	MenuBitmap   bitmap, icon;
} UnixMenuItem, *PUnixMenuItem;

typedef struct _menu_window
{
	Handle               self;
	XWindow              w;
	Point                sz;
	Point                pos;
	PMenuItemReg         m;
	int                  num;
	PUnixMenuItem        um;
	struct _menu_window *next;
	struct _menu_window *prev;
	int                  selected;
	int                  right;
	int                  last;
	int                  first;
	Region               rgn;
#ifdef HAVE_X11_EXTENSIONS_XRENDER_H
	Picture              argb_picture;
#endif
} MenuWindow, *PMenuWindow;

#define MENU_PALETTE_SIZE (ciMaxId + 2)
typedef struct _menu_sys_data
{
	COMPONENT_SYS_DATA;
	Bool                 paint_pending;
	PMenuWindow          w;
	MenuWindow           wstatic;
	PCachedFont          font;
	int                  guillemots;
	Bool                 layered;
	unsigned long        c[MENU_PALETTE_SIZE];
	unsigned long        argb_c[MENU_PALETTE_SIZE];
	Color                rgb[MENU_PALETTE_SIZE];
	XWindow              focus;
	PMenuWindow          focused;
} MenuSysData, *PMenuSysData;

#define cfTargets    (cfCustom  + 0)
#define cfCOUNT      (cfTargets + 1)
/* XXX not implemented
#define cfPalette    (cfCustom  + 1)
#define cfForeground (cfCustom  + 2)
#define cfBackground (cfCustom  + 3)
#define cfCOUNT      (cfCustom  + 4)
*/

#define CF_32        (sizeof(long)*8)        /* 32-bit properties are hacky */

typedef struct {
	IV size;
	unsigned char * data;
	Handle image;
	Atom name;
	Bool immediate;
} ClipboardDataItem, *PClipboardDataItem;

typedef struct _clipboard_sys_data
{
	COMPONENT_SYS_DATA;
	Atom                 selection;
	Atom                 target;
	Bool                 opened;
	Bool                 inside_event;
	Bool                 need_write;
	Handle               selection_owner;
	PClipboardDataItem   external;
	PClipboardDataItem   internal;
	PList                xfers;
	Bool                 xdnd_sending, xdnd_receiving;
} ClipboardSysData, *PClipboardSysData;

typedef struct
{
	Handle               self;
	unsigned char      * data;
	unsigned long        size;
	unsigned int         blocks;
	unsigned int         offset;
	Bool                 data_detached;
	Bool                 data_master;
	long                 id;
	XWindow              requestor;
	Atom                 property;
	Atom                 target;
	int                  format;
	struct timeval       time;
	unsigned long        delay;
} ClipboardXfer;

typedef unsigned char ClipboardXferKey[sizeof(XWindow)+sizeof(Atom)];

#define CLIPBOARD_XFER_KEY(key,window,property) \
	memcpy(key,&window,sizeof(XWindow));\
	memcpy(((unsigned char*)key) + sizeof(XWindow),&property,sizeof(Atom))

typedef union _unix_sys_data
{
	ClipboardSysData             clipboard;
	struct {
		COMPONENT_SYS_DATA;
	}                            component;
	DrawableSysData              drawable;
	MenuSysData                  menu;
	TimerSysData                 timer;
	RegionSysData                region;
} UnixSysData, *PUnixSysData;

#define DISP		(pguts-> display)
#define SCREEN		(pguts-> screen_number)
#define VISUAL          (pguts-> visual. visual)
#define DRIN		pguts-> display, pguts-> screen_number
#define X_WINDOW	(PComponent(self)-> handle)
#define X(obj)		((PDrawableSysData)(PComponent((obj))-> sysData))
#define DEFXX		PDrawableSysData selfxx = (self == NULL_HANDLE ? NULL : X(self))
#define M(obj)		((PMenuSysData)(PComponent((obj))-> sysData))
#define DEFMM           PMenuSysData selfxx = ((PMenuSysData)(PComponent((self))-> sysData))
#define C(obj)		((PClipboardSysData)(PComponent((obj))-> sysData))
#define DEFCC		PClipboardSysData selfxx = C(self)
#define XX		selfxx
#define WHEEL_DELTA	120
#define GET_RGBA_DESCRIPTION X(self)->flags.layered ? &guts. argb_bits : &guts. screen_bits
#define GET_REGION(obj) (&((PUnixSysData)(PComponent((obj))-> sysData))->region)

typedef U8 ColorComponent;

extern UnixGuts *
prima_unix_guts(void);

extern Handle
prima_xw2h( XWindow win);

extern void
prima_handle_event( XEvent *ev, XEvent *next_event);

extern void
prima_handle_menu_event( XEvent *ev, XWindow win, Handle self);

extern void
prima_handle_selection_event( XEvent *ev, XWindow win, Handle self);

extern void
prima_save_xerror_event( XErrorEvent *xr);

extern void
prima_restore_xerror_event( XErrorEvent *xr);

extern struct gc_head*
prima_get_gc( PDrawableSysData);

extern void
prima_get_fill_pattern_offsets( Handle self, int * x, int * y );

extern void
prima_rebuild_watchers( void);

extern void
prima_release_gc( PDrawableSysData);

extern Bool
prima_init_clipboard_subsystem( char * error_buf);

extern Bool
prima_init_font_subsystem( char * error_buf);

extern Bool
prima_font_subsystem_set_option( char *, char *);

extern Bool
prima_init_color_subsystem( char * error_buf);

extern Bool
prima_init_xrender_subsystem( char * error_buf);

extern Bool
prima_find_color_mask_range( unsigned long mask, unsigned int * shift, unsigned int * range);

extern Bool
prima_color_subsystem_set_option( char *, char *);

extern void
prima_done_color_subsystem( void);

extern void
prima_done_xrender_subsystem( void);

extern int
prima_color_find( Handle self, long color, int maxDiff, int * diff, int maxRank);

extern Bool
prima_palette_replace( Handle self, Bool fast);

#define COLORHINT_NONE  0
#define COLORHINT_BLACK 1
#define COLORHINT_WHITE 2

#define LOGCOLOR_BLACK 0
#define LOGCOLOR_WHITE (pguts->palSize?(pguts->palSize-1):0xffffffff)

extern Color
prima_map_color( Color color, int * hint);

extern unsigned long
prima_allocate_color( Handle self, Color color, Brush * brush);

extern void
prima_palette_free( Handle self, Bool priority);

extern Bool
prima_palette_alloc( Handle self);

extern Bool
prima_color_add_ref( Handle self, int index, int rank);

extern int
prima_color_sync( void);

extern Pixmap
prima_get_hatch( FillPattern * fp);

extern void

include/unix/guts.h  view on Meta::CPAN

extern int
prima_cocoa_is_x11_local(void);
#endif

typedef struct _ViewProfile {
Point        pos;
Point        size;
Point        virtualSize;
Bool         visible;
Bool         focused;
Handle       capture;
char *       title;
int          shape_count;
int          shape_ordering;
XRectangle * shape_rects;
} ViewProfile, *PViewProfile;

extern void
prima_set_view_ex( Handle self, PViewProfile p);

extern void
prima_get_view_ex( Handle self, PViewProfile p);

extern void
prima_notify_sys_handle( Handle self );

extern int
prima_flush_events( Display * disp, XEvent * ev, Handle self);

extern const char *
prima_font_debug_style(int style);

extern Region
prima_region_create( Handle mask);

extern Handle
prima_find_toplevel_window(Handle self);

extern Handle
prima_find_root_parent(Handle self);

extern Byte*
prima_mirror_bits( void);

extern int
prima_copy_region_data(void * region);

#define RPS_OK       0
#define RPS_PARTIAL  1
#define RPS_NODATA   2
#define RPS_ERROR    3

extern Bool
prima_handle_dnd_event( Handle self, XEvent *xev);

extern int
prima_read_property( XWindow window, Atom property, Atom * type, int * format,
	unsigned long * size, unsigned char ** data, Bool delete_property);

extern void
prima_clipboard_kill_item( PClipboardDataItem item, Handle id);

extern void
prima_detach_xfers( PClipboardSysData XX, Handle id, Bool clear_original_data);

extern void
prima_clipboard_query_targets( Handle self );

extern int
prima_clipboard_fill_targets( Handle self);

extern void
prima_update_dnd_aware( Handle self );

extern Cursor
prima_get_cursor(Handle self);

extern void
prima_paint_text_background( Handle self, Point * p, int x, int y );

extern void
prima_paint_box( Handle self, int w, int h, Matrix matrix, unsigned long foreground );

extern Bool
prima_update_quarks_cache( Handle self);



( run in 1.242 second using v1.01-cache-2.11-cpan-2398b32b56e )