/* Definitions and headers for communication on the Microsoft W32 API.
Copyright (C) 1995, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007 Free Software Foundation, Inc.
+ 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GNU Emacs.
-GNU Emacs is free software; you can redistribute it and/or modify
+GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA. */
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Added by Kevin Gallo */
#define BLACK_PIX_DEFAULT(f) PALETTERGB(0,0,0)
#define WHITE_PIX_DEFAULT(f) PALETTERGB(255,255,255)
-#define FONT_WIDTH(f) \
- ((f)->bdf ? (f)->bdf->width : (f)->tm.tmMaxCharWidth)
-#define FONT_HEIGHT(f) \
- ((f)->bdf ? (f)->bdf->height : (f)->tm.tmHeight)
-#define FONT_BASE(f) \
- ((f)->bdf ? (f)->bdf->ury : (f)->tm.tmAscent)
-#define FONT_DESCENT(f) \
- ((f)->bdf ? -((f)->bdf->lly) : (f)->tm.tmDescent)
-#define FONT_AVG_WIDTH(f) \
- ((f)->bdf ? (f)->bdf->width : (f)->tm.tmAveCharWidth)
+#define FONT_WIDTH(f) ((f)->max_width)
+#define FONT_HEIGHT(f) ((f)->height)
+#define FONT_BASE(f) ((f)->ascent)
+#define FONT_DESCENT(f) ((f)->descent)
#define CP_DEFAULT 1004
-/* Special pseudo-codepages. */
-#define CP_8BIT -1
-#define CP_UNICODE -2
-#define CP_UNKNOWN -3
#define CHECK_W32_FRAME(f, frame) \
if (NILP (frame)) \
extern MSG CurMsg;
extern BOOL bUseDflt;
-extern struct frame *x_window_to_frame ();
-
/* Structure recording bitmaps and reference count.
If REFCOUNT is 0 then this record is free to be reused. */
/* Number of bits per pixel on this screen. */
int n_cbits;
- /* Dimensions of this screen. */
- int height, width;
- int height_in,width_in;
-
/* Mask of things that cause the mouse to be grabbed. */
int grabbed;
received; value is reset after key is received. */
int faked_key;
- /* A table of all the fonts we have already loaded. */
- struct font_info *font_table;
-
- /* The current capacity of font_table. */
- int font_table_size;
-
/* Minimum width over all characters in all fonts in font_table. */
int smallest_char_width;
frame. It differs from w32_focus_frame when we're using a global
minibuffer. */
struct frame *x_highlight_frame;
-
- /* Cache of images. */
- struct image_cache *image_cache;
};
/* This is a chain of structures for all the displays currently in use. */
/* Regexp matching a font name whose width is the same as `PIXEL_SIZE'. */
extern Lisp_Object Vx_pixel_size_width_font_regexp;
-struct w32_display_info *x_display_info_for_name ();
+extern struct frame *x_window_to_frame (struct w32_display_info *, HWND);
-Lisp_Object display_x_get_resource P_ ((struct w32_display_info *,
- Lisp_Object, Lisp_Object,
- Lisp_Object, Lisp_Object));
+struct w32_display_info *x_display_info_for_name (Lisp_Object);
+
+Lisp_Object display_x_get_resource (struct w32_display_info *,
+ Lisp_Object, Lisp_Object,
+ Lisp_Object, Lisp_Object);
+
+extern struct w32_display_info *w32_term_init (Lisp_Object,
+ char *, char *);
+
+extern int x_display_pixel_height (struct w32_display_info *);
+extern int x_display_pixel_width (struct w32_display_info *);
-extern struct w32_display_info *w32_term_init ();
-\f
-extern Lisp_Object w32_list_fonts P_ ((struct frame *, Lisp_Object, int, int));
-extern struct font_info *w32_get_font_info (), *w32_query_font ();
-extern void w32_cache_char_metrics (XFontStruct *font);
-extern void w32_find_ccl_program();
-extern Lisp_Object x_get_font_repertory P_ ((struct frame *,
- struct font_info *));
\f
#define PIX_TYPE COLORREF
Window parent_desc;
/* Default ASCII font of this frame. */
- XFontStruct *font;
-
-#ifdef USE_FONT_BACKEND
- struct font *fontp;
-#endif /* USE_FONT_BACKEND */
+ struct font *font;
/* The baseline offset of the default ASCII font. */
int baseline_offset;
Cursor hourglass_cursor;
Cursor horizontal_drag_cursor;
- /* Window whose cursor is hourglass_cursor. This window is
- temporarily mapped to display an hourglass cursor. */
- Window hourglass_window;
-
/* Non-zero means hourglass cursor is currently displayed. */
unsigned hourglass_p : 1;
+ /* Non-hourglass cursor that is currently active. */
+ Cursor current_cursor;
+
/* Flag to set when the window needs to be completely repainted. */
int needs_exposure;
#define FRAME_FONTSET(f) ((f)->output_data.w32->fontset)
#define FRAME_BASELINE_OFFSET(f) ((f)->output_data.w32->baseline_offset)
-#ifdef USE_FONT_BACKEND
-#define FRAME_FONT_OBJECT(f) ((f)->output_data.w32->fontp)
-#endif /* USE_FONT_BACKEND */
-
/* This gives the w32_display_info structure for the display F is on. */
#define FRAME_W32_DISPLAY_INFO(f) (&one_w32_display_info)
#define FRAME_X_DISPLAY_INFO(f) (&one_w32_display_info)
/* This is the `Display *' which frame F is on. */
#define FRAME_X_DISPLAY(f) (0)
-/* This is the 'font_info *' which frame F has. */
-#define FRAME_W32_FONT_TABLE(f) (FRAME_W32_DISPLAY_INFO (f)->font_table)
-
/* Value is the smallest width of any character in any font on frame F. */
#define FRAME_SMALLEST_CHAR_WIDTH(F) \
#define FRAME_SMALLEST_FONT_HEIGHT(F) \
FRAME_W32_DISPLAY_INFO(F)->smallest_font_height
-
-/* Return a pointer to the image cache of frame F. */
-
-#define FRAME_X_IMAGE_CACHE(F) FRAME_W32_DISPLAY_INFO ((F))->image_cache
-
\f
/* W32-specific scroll bar stuff. */
#define VERTICAL_SCROLL_BAR_WIDTH_TRIM (0)
\f
-extern void w32_fill_rect ();
-extern void w32_clear_window ();
+struct frame; /* from frame.h */
+
+extern void w32_fill_rect (struct frame *, HDC, COLORREF, RECT *);
+extern void w32_clear_window (struct frame *);
#define w32_fill_area(f,hdc,pix,x,y,nx,ny) \
do { \
#define w32_clear_area(f,hdc,px,py,nx,ny) \
w32_fill_area (f, hdc, FRAME_BACKGROUND_PIXEL (f), px, py, nx, ny)
-extern struct font_info *w32_load_font ();
-extern void w32_unload_font ();
-
/* Define for earlier versions of Visual C */
#ifndef WM_MOUSEWHEEL
#define WM_MOUSEWHEEL (WM_MOUSELAST + 1)
#ifndef WM_MOUSEHWHEEL
#define WM_MOUSEHWHEEL (WM_MOUSEWHEEL + 4)
#endif /* WM_MOUSEHWHEEL */
+#ifndef WM_APPCOMMAND
+#define WM_APPCOMMAND 0x319
+#define GET_APPCOMMAND_LPARAM(lParam) (HIWORD(lParam) & 0x7fff)
+#endif
+#ifndef WM_UNICHAR
+#define WM_UNICHAR 0x109
+#endif
+#ifndef UNICODE_NOCHAR
+#define UNICODE_NOCHAR 0xFFFF
+#endif
#define WM_EMACS_START (WM_USER + 1)
#define WM_EMACS_KILL (WM_EMACS_START + 0)
#define WM_EMACS_SHOW_CARET (WM_EMACS_START + 17)
#define WM_EMACS_HIDE_CARET (WM_EMACS_START + 18)
#define WM_EMACS_SETCURSOR (WM_EMACS_START + 19)
-#define WM_EMACS_END (WM_EMACS_START + 20)
+#define WM_EMACS_PAINT (WM_EMACS_START + 20)
+#define WM_EMACS_END (WM_EMACS_START + 21)
#define WND_FONTWIDTH_INDEX (0)
#define WND_LINEHEIGHT_INDEX (4)
extern CRITICAL_SECTION critsect;
-extern void init_crit ();
-extern void delete_crit ();
+extern void init_crit (void);
+extern void delete_crit (void);
-extern void signal_quit ();
+extern void signal_quit (void);
#define enter_crit() EnterCriticalSection (&critsect)
#define leave_crit() LeaveCriticalSection (&critsect)
extern HDC get_frame_dc (struct frame * f);
extern int release_frame_dc (struct frame * f, HDC hDC);
-extern void drain_message_queue ();
+extern void drain_message_queue (void);
-extern BOOL get_next_msg ();
-extern BOOL post_msg ();
+extern BOOL get_next_msg (W32Msg *, BOOL);
+extern BOOL post_msg (W32Msg *);
extern void complete_deferred_msg (HWND hwnd, UINT msg, LRESULT result);
-extern void wait_for_sync ();
-extern BOOL parse_button ();
+extern BOOL parse_button (int, int, int *, int *);
extern void w32_sys_ring_bell (struct frame *f);
extern void x_delete_display (struct w32_display_info *dpyinfo);
XGCValues *XCreateGC (void *, Window, unsigned long, XGCValues *);
struct frame * check_x_frame (Lisp_Object);
-Lisp_Object vga_stdcolor_name (int);
EXFUN (Fx_display_color_p, 1);
EXFUN (Fx_display_grayscale_p, 1);
-#define FONT_TYPE_FOR_UNIBYTE(font, ch) \
- ((font)->bdf ? BDF_1D_FONT : ANSI_FONT)
-
-#define FONT_TYPE_FOR_MULTIBYTE(font, ch) \
- (!(font)->bdf \
- ? UNICODE_FONT \
- : ((CHARSET_DIMENSION (CHAR_CHARSET ((ch))) == 1) \
- ? BDF_1D_FONT : BDF_2D_FONT))
-
-typedef DWORD (WINAPI * ClipboardSequence_Proc) ();
+typedef DWORD (WINAPI * ClipboardSequence_Proc) (void);
typedef BOOL (WINAPI * AppendMenuW_Proc) (
IN HMENU,
IN UINT,