You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ColorType.java 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package org.apache.xml.fop.datatypes;
  2. /**
  3. * a colour quantity in XSL
  4. */
  5. public class ColorType {
  6. /** the red component */
  7. protected float red;
  8. /** the green component */
  9. protected float green;
  10. /** the blue component */
  11. protected float blue;
  12. /**
  13. * set the colour given a particular String specifying either a
  14. * colour name or #RGB or #RRGGBB
  15. */
  16. public ColorType (String value) {
  17. if (value.startsWith("#")) {
  18. try {
  19. if (value.length()==4) {
  20. // note: divide by 15 so F = FF = 1 and so on
  21. this.red = Integer.parseInt(value.substring(1,2),16)/15f;
  22. this.green = Integer.parseInt(value.substring(2,3),16)/15f;
  23. this.blue = Integer.parseInt(value.substring(3),16)/15f;
  24. } else if (value.length()==7) {
  25. // note: divide by 255 so FF = 1
  26. this.red = Integer.parseInt(value.substring(1,3),16)/255f;
  27. this.green = Integer.parseInt(value.substring(3,5),16)/255f;
  28. this.blue = Integer.parseInt(value.substring(5),16)/255f;
  29. } else {
  30. this.red = 0;
  31. this.green = 0;
  32. this.blue = 0;
  33. System.err.println("ERROR: unknown colour format. Must be #RGB or #RRGGBB");
  34. }
  35. } catch (Exception e) {
  36. this.red = 0;
  37. this.green = 0;
  38. this.blue = 0;
  39. System.err.println("ERROR: unknown colour format. Must be #RGB or #RRGGBB");
  40. }
  41. } else {
  42. if (value.toLowerCase().equals("black")) {
  43. this.red = 0;
  44. this.green = 0;
  45. this.blue = 0;
  46. } else if (value.toLowerCase().equals("green")) {
  47. this.red = 0;
  48. this.green = 0.5f;
  49. this.blue = 0;
  50. } else if (value.toLowerCase().equals("silver")) {
  51. this.red = 0.75f;
  52. this.green = 0.75f;
  53. this.blue = 0.75f;
  54. } else if (value.toLowerCase().equals("lime")) {
  55. this.red = 0;
  56. this.green = 1;
  57. this.blue = 0;
  58. } else if (value.toLowerCase().equals("gray")) {
  59. this.red = 0.5f;
  60. this.green = 0.5f;
  61. this.blue = 0.5f;
  62. } else if (value.toLowerCase().equals("olive")) {
  63. this.red = 0.5f;
  64. this.green = 0.5f;
  65. this.blue = 0;
  66. } else if (value.toLowerCase().equals("white")) {
  67. this.red = 1;
  68. this.green = 1;
  69. this.blue = 1;
  70. } else if (value.toLowerCase().equals("yellow")) {
  71. this.red = 1;
  72. this.green = 1;
  73. this.blue = 0;
  74. } else if (value.toLowerCase().equals("maroon")) {
  75. this.red = 0.5f;
  76. this.green = 0;
  77. this.blue = 0;
  78. } else if (value.toLowerCase().equals("navy")) {
  79. this.red = 0;
  80. this.green = 0;
  81. this.blue = 0.5f;
  82. } else if (value.toLowerCase().equals("red")) {
  83. this.red = 1;
  84. this.green = 0;
  85. this.blue = 0;
  86. } else if (value.toLowerCase().equals("blue")) {
  87. this.red = 0;
  88. this.green = 0;
  89. this.blue = 1;
  90. } else if (value.toLowerCase().equals("purple")) {
  91. this.red = 0.5f;
  92. this.green = 0;
  93. this.blue = 0.5f;
  94. } else if (value.toLowerCase().equals("teal")) {
  95. this.red = 0;
  96. this.green = 0.5f;
  97. this.blue = 0.5f;
  98. } else if (value.toLowerCase().equals("fuchsia")) {
  99. this.red = 1;
  100. this.green = 0;
  101. this.blue = 1;
  102. } else if (value.toLowerCase().equals("aqua")) {
  103. this.red = 0;
  104. this.green = 1;
  105. this.blue = 1;
  106. } else if (value.toLowerCase().equals("orange")) {
  107. // for compatibility with passiveTex
  108. this.red = 0.7f;
  109. this.green = 0.5f;
  110. this.blue = 0;
  111. } else {
  112. this.red = 0;
  113. this.green = 0;
  114. this.blue = 0;
  115. System.err.println("ERROR: unknown colour name: " + value);
  116. }
  117. }
  118. }
  119. public float blue() {
  120. return this.blue;
  121. }
  122. public float green() {
  123. return this.green;
  124. }
  125. public float red() {
  126. return this.red;
  127. }
  128. }