Units.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. using System;
  2. using System.Collections;
  3. namespace FastReport.Utils
  4. {
  5. /// <summary>
  6. /// The report page units.
  7. /// </summary>
  8. public enum PageUnits
  9. {
  10. /// <summary>
  11. /// Specifies the units measured in millimeters.
  12. /// </summary>
  13. Millimeters,
  14. /// <summary>
  15. /// Specifies the units measured in centimeters.
  16. /// </summary>
  17. Centimeters,
  18. /// <summary>
  19. /// Specifies the units measured in inches.
  20. /// </summary>
  21. Inches,
  22. /// <summary>
  23. /// Specifies the units measured in hundreths of inch.
  24. /// </summary>
  25. HundrethsOfInch
  26. }
  27. /// <summary>
  28. /// Defines the constants used to convert between report units and screen pixels.
  29. /// </summary>
  30. /// <remarks>
  31. /// To convert pixels to millimeters, use the following code:
  32. /// <code>valueInMillimeters = valueInPixels / Units.Millimeters;</code>
  33. /// To convert millimeters to pixels, use the following code:
  34. /// <code>valueInPixels = valueInMillimeters * Units.Millimeters;</code>
  35. /// </remarks>
  36. public static class Units
  37. {
  38. /// <summary>
  39. /// The number of pixels in one millimeter.
  40. /// </summary>
  41. public static float Millimeters = 3.78f;
  42. /// <summary>
  43. /// The number of pixels in one centimeter.
  44. /// </summary>
  45. public static float Centimeters = 37.8f;
  46. /// <summary>
  47. /// The number of pixels in one inch.
  48. /// </summary>
  49. public static float Inches = 96;
  50. /// <summary>
  51. /// The number of pixels in 1/10 of ich.
  52. /// </summary>
  53. public static float TenthsOfInch = 9.6f;
  54. /// <summary>
  55. /// The number of pixels in 1/100 of inch.
  56. /// </summary>
  57. public static float HundrethsOfInch = 0.96f;
  58. }
  59. public static class FileSize
  60. {
  61. /// <summary>
  62. /// File size units.
  63. /// </summary>
  64. public enum Units
  65. {
  66. /// <summary>
  67. /// Bytes.
  68. /// </summary>
  69. Bytes,
  70. /// <summary>
  71. /// Kilobytes.
  72. /// </summary>
  73. KB,
  74. /// <summary>
  75. /// Megabytes.
  76. /// </summary>
  77. MB,
  78. /// <summary>
  79. /// Gigabytes.
  80. /// </summary>
  81. GB,
  82. /// <summary>
  83. /// Terobytes.
  84. /// </summary>
  85. TB
  86. }
  87. /// <summary>
  88. /// Convert numbers to file size (example 1 MB).
  89. /// </summary>
  90. /// <param name="value"></param>
  91. /// <returns></returns>
  92. public static string ConvertToString(long value)
  93. {
  94. int steps = 0;
  95. float result = value;
  96. while (result > 1024 - 1)
  97. {
  98. result /= 1024;
  99. steps++;
  100. }
  101. return result.ToString("F2") + " " + GetUnits((Units)steps);
  102. }
  103. private static string GetUnits(Units units)
  104. {
  105. switch (units)
  106. {
  107. case Units.Bytes:
  108. return Res.Get("Misc,Bytes");
  109. case Units.KB:
  110. return Res.Get("Misc,KB");
  111. case Units.MB:
  112. return Res.Get("Misc,MB");
  113. case Units.GB:
  114. return Res.Get("Misc,GB");
  115. case Units.TB:
  116. return Res.Get("Misc,TB");
  117. default:
  118. return Res.Get("Misc,Bytes");
  119. }
  120. }
  121. }
  122. }