comparison src/frame-msw.c @ 903:4a27df428c73

[xemacs-hg @ 2002-07-06 05:48:14 by andyp] sync with 21.4
author andyp
date Sat, 06 Jul 2002 05:48:22 +0000
parents 79c6ff3eef26
children 37bdd24225ef
comparison
equal deleted inserted replaced
902:2fd2239ea63a 903:4a27df428c73
838 static void 838 static void
839 msprinter_init_frame_3 (struct frame *f) 839 msprinter_init_frame_3 (struct frame *f)
840 { 840 {
841 DOCINFOW di; 841 DOCINFOW di;
842 struct device *device = XDEVICE (FRAME_DEVICE (f)); 842 struct device *device = XDEVICE (FRAME_DEVICE (f));
843 HDC hdc;
844 int frame_left, frame_top, frame_width, frame_height; 843 int frame_left, frame_top, frame_width, frame_height;
845 844
846 /* DC might be recreated in msprinter_apply_devmode, 845 /* DC might be recreated in msprinter_apply_devmode,
847 so do not initialize until now */ 846 so do not initialize until now */
848 hdc = DEVICE_MSPRINTER_HDC (device); 847 HDC hdc = DEVICE_MSPRINTER_HDC (device);
849 848 int logpixelsx = GetDeviceCaps (hdc, LOGPIXELSX);
850 /* Compute geometry properties */ 849 int logpixelsy = GetDeviceCaps (hdc, LOGPIXELSY);
851 frame_left = (MulDiv (GetDeviceCaps (hdc, LOGPIXELSX), 850 int physicaloffsetx = GetDeviceCaps (hdc, PHYSICALOFFSETX);
852 FRAME_MSPRINTER_LEFT_MARGIN (f), 1440) 851 int physicaloffsety = GetDeviceCaps (hdc, PHYSICALOFFSETY);
853 - GetDeviceCaps (hdc, PHYSICALOFFSETX)); 852 int physicalheight = GetDeviceCaps (hdc, PHYSICALHEIGHT);
854 853 int physicalwidth = GetDeviceCaps (hdc, PHYSICALWIDTH);
854
855 /* Compute geometry properties.
856 Conversion is from TWIPS -> inches -> pixels. */
857 frame_left = MulDiv (logpixelsx, FRAME_MSPRINTER_LEFT_MARGIN(f), 1440)
858 - physicaloffsetx;
859
855 if (FRAME_MSPRINTER_CHARWIDTH (f) > 0) 860 if (FRAME_MSPRINTER_CHARWIDTH (f) > 0)
856 { 861 {
857 char_to_real_pixel_size (f, FRAME_MSPRINTER_CHARWIDTH (f), 0, 862 char_to_real_pixel_size (f, FRAME_MSPRINTER_CHARWIDTH (f), 0,
858 &frame_width, NULL); 863 &frame_width, NULL);
859 FRAME_MSPRINTER_RIGHT_MARGIN (f) = 864 FRAME_MSPRINTER_RIGHT_MARGIN(f) =
860 MulDiv (GetDeviceCaps (hdc, PHYSICALWIDTH) 865 MulDiv (physicalwidth - (frame_left + frame_width), 1440,
861 - (frame_left + frame_width), 1440, 866 logpixelsx);
862 GetDeviceCaps (hdc, LOGPIXELSX));
863 } 867 }
864 else 868 else
865 frame_width = (GetDeviceCaps (hdc, PHYSICALWIDTH) 869 frame_width = physicalwidth - frame_left
866 - frame_left 870 - MulDiv (logpixelsx, FRAME_MSPRINTER_RIGHT_MARGIN(f), 1440)
867 - MulDiv (GetDeviceCaps (hdc, LOGPIXELSX), 871 - physicaloffsetx;
868 FRAME_MSPRINTER_RIGHT_MARGIN (f), 1440)); 872
869 873 frame_top = MulDiv (logpixelsy, FRAME_MSPRINTER_TOP_MARGIN(f), 1440)
870 frame_top = (MulDiv (GetDeviceCaps (hdc, LOGPIXELSY), 874 - physicaloffsety;
871 FRAME_MSPRINTER_TOP_MARGIN (f), 1440)
872 - GetDeviceCaps (hdc, PHYSICALOFFSETY));
873 875
874 if (FRAME_MSPRINTER_CHARHEIGHT (f) > 0) 876 if (FRAME_MSPRINTER_CHARHEIGHT (f) > 0)
875 { 877 {
876 char_to_real_pixel_size (f, 0, FRAME_MSPRINTER_CHARHEIGHT (f), 878 char_to_real_pixel_size (f, 0, FRAME_MSPRINTER_CHARHEIGHT (f),
877 NULL, &frame_height); 879 NULL, &frame_height);
878 880
879 FRAME_MSPRINTER_BOTTOM_MARGIN (f) = 881 FRAME_MSPRINTER_BOTTOM_MARGIN(f) =
880 MulDiv (GetDeviceCaps (hdc, PHYSICALHEIGHT) 882 MulDiv (physicalheight - (frame_top + frame_height), 1440,
881 - (frame_top + frame_height), 1440, 883 logpixelsy);
882 GetDeviceCaps (hdc, LOGPIXELSY));
883 } 884 }
884 else 885 else
885 frame_height = (GetDeviceCaps (hdc, PHYSICALHEIGHT) 886 frame_height = physicalheight - frame_top
886 - frame_top 887 - MulDiv (logpixelsy, FRAME_MSPRINTER_BOTTOM_MARGIN(f), 1440)
887 - MulDiv (GetDeviceCaps (hdc, LOGPIXELSY), 888 - physicaloffsety;
888 FRAME_MSPRINTER_BOTTOM_MARGIN (f), 1440));
889 889
890 /* Geometry sanity checks */ 890 /* Geometry sanity checks */
891 if (!frame_pixsize_valid_p (f, frame_width, frame_height)) 891 if (!frame_pixsize_valid_p (f, frame_width, frame_height))
892 invalid_operation ("Area inside print margins has shrunk to naught", 892 invalid_operation ("Area inside print margins has shrunk to naught",
893 STRINGP (f->name) ? f->name : Qunbound); 893 STRINGP (f->name) ? f->name : Qunbound);