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 )