ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
Drawing.php
Go to the documentation of this file.
1<?php
37{
44 public static function pixelsToEMU($pValue = 0) {
45 return round($pValue * 9525);
46 }
47
54 public static function EMUToPixels($pValue = 0) {
55 if ($pValue != 0) {
56 return round($pValue / 9525);
57 } else {
58 return 0;
59 }
60 }
61
71 public static function pixelsToCellDimension($pValue = 0, PHPExcel_Style_Font $pDefaultFont) {
72 // Font name and size
73 $name = $pDefaultFont->getName();
74 $size = $pDefaultFont->getSize();
75
77 // Exact width can be determined
78 $colWidth = $pValue
81 } else {
82 // We don't have data for this particular font and size, use approximation by
83 // extrapolating from Calibri 11
84 $colWidth = $pValue * 11
85 * PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['width']
87 }
88
89 return $colWidth;
90 }
91
99 public static function cellDimensionToPixels($pValue = 0, PHPExcel_Style_Font $pDefaultFont) {
100 // Font name and size
101 $name = $pDefaultFont->getName();
102 $size = $pDefaultFont->getSize();
103
105 // Exact width can be determined
106 $colWidth = $pValue
109
110 } else {
111 // We don't have data for this particular font and size, use approximation by
112 // extrapolating from Calibri 11
113 $colWidth = $pValue * $size
114 * PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['px']
115 / PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['width'] / 11;
116 }
117
118 // Round pixels to closest integer
119 $colWidth = (int) round($colWidth);
120
121 return $colWidth;
122 }
123
130 public static function pixelsToPoints($pValue = 0) {
131 return $pValue * 0.67777777;
132 }
133
140 public static function pointsToPixels($pValue = 0) {
141 if ($pValue != 0) {
142 return (int) ceil($pValue * 1.333333333);
143 } else {
144 return 0;
145 }
146 }
147
154 public static function degreesToAngle($pValue = 0) {
155 return (int)round($pValue * 60000);
156 }
157
164 public static function angleToDegrees($pValue = 0) {
165 if ($pValue != 0) {
166 return round($pValue / 60000);
167 } else {
168 return 0;
169 }
170 }
171
179 public static function imagecreatefrombmp($p_sFile)
180 {
181 // Load the image into a string
182 $file = fopen($p_sFile,"rb");
183 $read = fread($file,10);
184 while(!feof($file)&&($read<>""))
185 $read .= fread($file,1024);
186
187 $temp = unpack("H*",$read);
188 $hex = $temp[1];
189 $header = substr($hex,0,108);
190
191 // Process the header
192 // Structure: http://www.fastgraph.com/help/bmp_header_format.html
193 if (substr($header,0,4)=="424d")
194 {
195 // Cut it in parts of 2 bytes
196 $header_parts = str_split($header,2);
197
198 // Get the width 4 bytes
199 $width = hexdec($header_parts[19].$header_parts[18]);
200
201 // Get the height 4 bytes
202 $height = hexdec($header_parts[23].$header_parts[22]);
203
204 // Unset the header params
205 unset($header_parts);
206 }
207
208 // Define starting X and Y
209 $x = 0;
210 $y = 1;
211
212 // Create newimage
213 $image = imagecreatetruecolor($width,$height);
214
215 // Grab the body from the image
216 $body = substr($hex,108);
217
218 // Calculate if padding at the end-line is needed
219 // Divided by two to keep overview.
220 // 1 byte = 2 HEX-chars
221 $body_size = (strlen($body)/2);
222 $header_size = ($width*$height);
223
224 // Use end-line padding? Only when needed
225 $usePadding = ($body_size>($header_size*3)+4);
226
227 // Using a for-loop with index-calculation instaid of str_split to avoid large memory consumption
228 // Calculate the next DWORD-position in the body
229 for ($i=0;$i<$body_size;$i+=3)
230 {
231 // Calculate line-ending and padding
232 if ($x>=$width)
233 {
234 // If padding needed, ignore image-padding
235 // Shift i to the ending of the current 32-bit-block
236 if ($usePadding)
237 $i += $width%4;
238
239 // Reset horizontal position
240 $x = 0;
241
242 // Raise the height-position (bottom-up)
243 $y++;
244
245 // Reached the image-height? Break the for-loop
246 if ($y>$height)
247 break;
248 }
249
250 // Calculation of the RGB-pixel (defined as BGR in image-data)
251 // Define $i_pos as absolute position in the body
252 $i_pos = $i*2;
253 $r = hexdec($body[$i_pos+4].$body[$i_pos+5]);
254 $g = hexdec($body[$i_pos+2].$body[$i_pos+3]);
255 $b = hexdec($body[$i_pos].$body[$i_pos+1]);
256
257 // Calculate and draw the pixel
258 $color = imagecolorallocate($image,$r,$g,$b);
259 imagesetpixel($image,$x,$height-$y,$color);
260
261 // Raise the horizontal position
262 $x++;
263 }
264
265 // Unset the body / free the memory
266 unset($body);
267
268 // Return image-object
269 return $image;
270 }
271
272}
$size
Definition: RandomTest.php:79
An exception for terminatinating execution or to throw for unit testing.
static pixelsToCellDimension($pValue=0, PHPExcel_Style_Font $pDefaultFont)
Convert pixels to column width.
Definition: Drawing.php:71
static EMUToPixels($pValue=0)
Convert EMU to pixels.
Definition: Drawing.php:54
static degreesToAngle($pValue=0)
Convert degrees to angle.
Definition: Drawing.php:154
static imagecreatefrombmp($p_sFile)
Create a new image from file.
Definition: Drawing.php:179
static cellDimensionToPixels($pValue=0, PHPExcel_Style_Font $pDefaultFont)
Convert column width from (intrinsic) Excel units to pixels.
Definition: Drawing.php:99
static pixelsToEMU($pValue=0)
Convert pixels to EMU.
Definition: Drawing.php:44
static pixelsToPoints($pValue=0)
Convert pixels to points.
Definition: Drawing.php:130
static angleToDegrees($pValue=0)
Convert angle to degrees.
Definition: Drawing.php:164
static pointsToPixels($pValue=0)
Convert points to pixels.
Definition: Drawing.php:140
static $defaultColumnWidths
Definition: Font.php:151
getSize()
Get Size.
Definition: Font.php:262
getName()
Get Name.
Definition: Font.php:231
$y
Definition: example_007.php:83
$x
Definition: example_009.php:98
$header
$r
Definition: example_031.php:79
if(!file_exists("$old.txt")) if( $old===$new) if(file_exists("$new.txt")) $file