PrinterUnitConvert.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. //
  2. // System.Drawing.Printing.PrinterUnitConvert
  3. //
  4. // Authors:
  5. // Martin Willemoes Hansen ([email protected])
  6. // Herve Poussineau ([email protected])
  7. //
  8. // (C) 2003 Martin Willemoes Hansen
  9. //
  10. namespace System.Drawing.Printing
  11. {
  12. public sealed class PrinterUnitConvert
  13. {
  14. public static double Convert (double value,
  15. PrinterUnit fromUnit,
  16. PrinterUnit toUnit)
  17. {
  18. switch (fromUnit)
  19. {
  20. case PrinterUnit.Display:
  21. switch (toUnit)
  22. {
  23. case PrinterUnit.Display: return value;
  24. case PrinterUnit.ThousandthsOfAnInch: return value * 10;
  25. case PrinterUnit.HundredthsOfAMillimeter: return value * 2.54;
  26. case PrinterUnit.TenthsOfAMillimeter: return value * .254;
  27. }
  28. break;
  29. case PrinterUnit.ThousandthsOfAnInch:
  30. switch (toUnit)
  31. {
  32. case PrinterUnit.Display: return value / 10;
  33. case PrinterUnit.ThousandthsOfAnInch: return value;
  34. case PrinterUnit.HundredthsOfAMillimeter: return value * .254;
  35. case PrinterUnit.TenthsOfAMillimeter: return value * .0254;
  36. }
  37. break;
  38. case PrinterUnit.HundredthsOfAMillimeter:
  39. switch (toUnit)
  40. {
  41. case PrinterUnit.Display: return value / 2.54;
  42. case PrinterUnit.ThousandthsOfAnInch: return value / .254;
  43. case PrinterUnit.HundredthsOfAMillimeter: return value;
  44. case PrinterUnit.TenthsOfAMillimeter: return value / 10;
  45. }
  46. break;
  47. case PrinterUnit.TenthsOfAMillimeter:
  48. switch (toUnit)
  49. {
  50. case PrinterUnit.Display: return value / .254;
  51. case PrinterUnit.ThousandthsOfAnInch: return value / .0254;
  52. case PrinterUnit.HundredthsOfAMillimeter: return value * 10;
  53. case PrinterUnit.TenthsOfAMillimeter: return value;
  54. }
  55. break;
  56. }
  57. // should never happen
  58. throw new NotImplementedException();
  59. }
  60. public static int Convert (int value,
  61. PrinterUnit fromUnit,
  62. PrinterUnit toUnit)
  63. {
  64. return (int)Convert((double)value, fromUnit, toUnit);
  65. }
  66. public static Margins Convert (Margins value,
  67. PrinterUnit fromUnit,
  68. PrinterUnit toUnit)
  69. {
  70. return new Margins(
  71. Convert(value.Left, fromUnit, toUnit),
  72. Convert(value.Right, fromUnit, toUnit),
  73. Convert(value.Top, fromUnit, toUnit),
  74. Convert(value.Bottom, fromUnit, toUnit));
  75. }
  76. public static Point Convert (Point value,
  77. PrinterUnit fromUnit,
  78. PrinterUnit toUnit)
  79. {
  80. return new Point(
  81. Convert(value.X, fromUnit, toUnit),
  82. Convert(value.Y, fromUnit, toUnit));
  83. }
  84. public static Rectangle Convert (Rectangle value,
  85. PrinterUnit fromUnit,
  86. PrinterUnit toUnit)
  87. {
  88. return new Rectangle(
  89. Convert(value.X, fromUnit, toUnit),
  90. Convert(value.Y, fromUnit, toUnit),
  91. Convert(value.Width, fromUnit, toUnit),
  92. Convert(value.Height, fromUnit, toUnit));
  93. }
  94. public static Size Convert (Size value,
  95. PrinterUnit fromUnit,
  96. PrinterUnit toUnit)
  97. {
  98. return new Size(
  99. Convert(value.Width, fromUnit, toUnit),
  100. Convert(value.Height, fromUnit, toUnit));
  101. }
  102. }
  103. }