mswindows_set_frame_size (struct frame *f, int width, int height)
{
RECT rect;
+ int columns, rows;
+
rect.left = rect.top = 0;
rect.right = width;
rect.bottom = height;
+ pixel_to_char_size (f, rect.right, rect.bottom, &columns, &rows);
+ change_frame_size (f, rows, columns, 0);
+
AdjustWindowRectEx (&rect,
GetWindowLong (FRAME_MSWINDOWS_HANDLE(f), GWL_STYLE),
GetMenu (FRAME_MSWINDOWS_HANDLE(f)) != NULL,
}
}
-void mswindows_size_frame_internal (struct frame* f, XEMACS_RECT_WH* dest)
+void
+mswindows_size_frame_internal (struct frame* f, XEMACS_RECT_WH* dest)
{
RECT rect, ws_rect;
int pixel_width, pixel_height;
int size_p = (dest->width >=0 || dest->height >=0);
int move_p = (dest->top >=0 || dest->left >=0);
- char_to_real_pixel_size (f, dest->width, dest->height, &pixel_width, &pixel_height);
+ char_to_real_pixel_size (f, dest->width, dest->height, &pixel_width,
+ &pixel_height);
if (dest->width < 0)
pixel_width = FRAME_PIXWIDTH (f);
f->frame_data = xnew_and_zero (struct msprinter_frame);
- /* Default margin size is 1" = 1440 twips */
- FRAME_MSPRINTER_TOP_MARGIN(f) = 1440;
- FRAME_MSPRINTER_BOTTOM_MARGIN(f) = 1440;
- FRAME_MSPRINTER_LEFT_MARGIN(f) = 1440;
- FRAME_MSPRINTER_RIGHT_MARGIN(f) = 1440;
+ FRAME_MSPRINTER_TOP_MARGIN (f) =
+ mswindows_get_default_margin (Qtop_margin);
+ FRAME_MSPRINTER_BOTTOM_MARGIN (f) =
+ mswindows_get_default_margin (Qbottom_margin);
+ FRAME_MSPRINTER_LEFT_MARGIN (f) =
+ mswindows_get_default_margin (Qleft_margin);
+ FRAME_MSPRINTER_RIGHT_MARGIN (f) =
+ mswindows_get_default_margin (Qright_margin);
/* Negative for "uinspecified" */
- FRAME_MSPRINTER_CHARWIDTH(f) = -1;
- FRAME_MSPRINTER_CHARHEIGHT(f) = -1;
+ FRAME_MSPRINTER_CHARWIDTH (f) = -1;
+ FRAME_MSPRINTER_CHARHEIGHT (f) = -1;
}
static void
{
DOCINFO di;
struct device *device = XDEVICE (FRAME_DEVICE (f));
- HDC hdc;
int frame_left, frame_top, frame_width, frame_height;
-
+
/* DC might be recreated in msprinter_apply_devmode,
so do not initialize until now */
- hdc = DEVICE_MSPRINTER_HDC (device);
-
- /* Compute geometry properties */
- frame_left = (MulDiv (GetDeviceCaps (hdc, LOGPIXELSX),
- FRAME_MSPRINTER_LEFT_MARGIN(f), 1440)
- - GetDeviceCaps (hdc, PHYSICALOFFSETX));
+ HDC hdc = DEVICE_MSPRINTER_HDC (device);
+ int logpixelsx = GetDeviceCaps (hdc, LOGPIXELSX);
+ int logpixelsy = GetDeviceCaps (hdc, LOGPIXELSY);
+ int physicaloffsetx = GetDeviceCaps (hdc, PHYSICALOFFSETX);
+ int physicaloffsety = GetDeviceCaps (hdc, PHYSICALOFFSETY);
+ int physicalheight = GetDeviceCaps (hdc, PHYSICALHEIGHT);
+ int physicalwidth = GetDeviceCaps (hdc, PHYSICALWIDTH);
+
+ /* Compute geometry properties.
+ Conversion is from TWIPS -> inches -> pixels. */
+ frame_left = MulDiv (logpixelsx, FRAME_MSPRINTER_LEFT_MARGIN(f), 1440)
+ - physicaloffsetx;
if (FRAME_MSPRINTER_CHARWIDTH(f) > 0)
{
char_to_real_pixel_size (f, FRAME_MSPRINTER_CHARWIDTH(f), 0,
&frame_width, NULL);
FRAME_MSPRINTER_RIGHT_MARGIN(f) =
- MulDiv (GetDeviceCaps (hdc, PHYSICALWIDTH)
- - (frame_left + frame_width), 1440,
- GetDeviceCaps (hdc, LOGPIXELSX));
+ MulDiv (physicalwidth - (frame_left + frame_width), 1440,
+ logpixelsx);
}
else
- frame_width = (GetDeviceCaps (hdc, PHYSICALWIDTH)
- - frame_left
- - MulDiv (GetDeviceCaps (hdc, LOGPIXELSX),
- FRAME_MSPRINTER_RIGHT_MARGIN(f), 1440));
+ frame_width = physicalwidth - frame_left
+ - MulDiv (logpixelsx, FRAME_MSPRINTER_RIGHT_MARGIN(f), 1440)
+ - physicaloffsetx;
- frame_top = (MulDiv (GetDeviceCaps (hdc, LOGPIXELSY),
- FRAME_MSPRINTER_TOP_MARGIN(f), 1440)
- - GetDeviceCaps (hdc, PHYSICALOFFSETY));
+ frame_top = MulDiv (logpixelsy, FRAME_MSPRINTER_TOP_MARGIN(f), 1440)
+ - physicaloffsety;
if (FRAME_MSPRINTER_CHARHEIGHT(f) > 0)
{
NULL, &frame_height);
FRAME_MSPRINTER_BOTTOM_MARGIN(f) =
- MulDiv (GetDeviceCaps (hdc, PHYSICALHEIGHT)
- - (frame_top + frame_height), 1440,
- GetDeviceCaps (hdc, LOGPIXELSY));
+ MulDiv (physicalheight - (frame_top + frame_height), 1440,
+ logpixelsy);
}
else
- frame_height = (GetDeviceCaps (hdc, PHYSICALHEIGHT)
- - frame_top
- - MulDiv (GetDeviceCaps (hdc, LOGPIXELSY),
- FRAME_MSPRINTER_BOTTOM_MARGIN(f), 1440));
+ frame_height = physicalheight - frame_top
+ - MulDiv (logpixelsy, FRAME_MSPRINTER_BOTTOM_MARGIN(f), 1440)
+ - physicaloffsety;
/* Geometry sanity checks */
if (!frame_pixsize_valid_p (f, frame_width, frame_height))
top-margin typographical unit of measurement,
right-margin equal to 1/1440 of an inch, or 1/20 of a
bottom-margin point, and roughly equal to 7/400 of a
- millimeter. If not specified, each margin
- defaults to one inch (25.4 mm).
+ millimeter. If not specified, the left
+ and right margins default to 1 inch
+ (25.4 mm) and the top and bottom margins
+ to 0.5 inch (12.7 mm).
MARGINS NOTE. right-margin and bottom-margin are overridden by
the height and width properties. If you want to specify size
want to specify right/bottom margins, set height/width in this
plist to nil, as in this example:
- (setq default-frame-plist '(height 55 'width 80)
- default-msprinter-frame-plist '(height nil 'width nil))
+ (setq default-frame-plist '(height 55 width 80)
+ default-msprinter-frame-plist '(height nil width nil))
See also `default-frame-plist', which specifies properties which apply
to all frames, not just mswindows frames.