Mercurial > hg > xemacs-beta
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); |