1: <?php
2: /**
3: * LICENSE (BSD)
4: *
5: * Copyright (c) 2013, Gerd Christian Kunze
6: * All rights reserved.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions are
10: * met:
11: *
12: * * Redistributions of source code must retain the above copyright
13: * notice, this list of conditions and the following disclaimer.
14: *
15: * * Redistributions in binary form must reproduce the above copyright
16: * notice, this list of conditions and the following disclaimer in the
17: * documentation and/or other materials provided with the distribution.
18: *
19: * * Neither the name of Gerd Christian Kunze nor the names of the
20: * contributors may be used to endorse or promote products derived from
21: * this software without specific prior written permission.
22: *
23: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
24: * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
25: * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
27: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
28: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30: * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32: * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34: *
35: * Open
36: * 25.02.2013 16:06
37: */
38: namespace MOC\Module\Office\Image;
39: use MOC\Api;
40: use MOC\Generic\Device\Module;
41: use MOC\Module\Drive\File;
42:
43: /**
44: *
45: */
46: class Open implements Module {
47: /**
48: * Get Changelog
49: *
50: * @static
51: * @return \MOC\Core\Changelog
52: */
53: public static function InterfaceChangelog() {
54: return Api::Core()->Changelog();
55: }
56:
57: /**
58: * Get Dependencies
59: *
60: * @static
61: * @return \MOC\Core\Depending
62: */
63: public static function InterfaceDepending() {
64: return Api::Core()->Depending();
65: }
66:
67: /**
68: * Get Singleton/Instance
69: *
70: * @static
71: * @return Open
72: */
73: public static function InterfaceInstance() {
74: return new Open();
75: }
76:
77: /**
78: * @param int $Width
79: * @param int $Height
80: *
81: * @return \MOC\Module\Office\Image
82: */
83: public function Blank( $Width, $Height ) {
84: $Resource = imagecreatetruecolor( $Width, $Height );
85: imagealphablending( $Resource, false );
86: imagesavealpha( $Resource, true );
87: imagefill( $Resource, 0, 0, imagecolorallocatealpha( $Resource, 0, 0, 0, 127 ) );
88: Api::Module()->Office()->Image()->_openResource( $Resource );
89: return Api::Module()->Office()->Image();
90: }
91:
92: /**
93: * @param File $File
94: *
95: * @return \MOC\Module\Office\Image
96: */
97: public function File( File $File ){
98: if( $File->Exists() ) {
99: $Factory = $this->GetLoadFactory( $File );
100: $Resource = $Factory( $File->GetLocation() );
101: if( $this->GetTypeFactory( $File ) == 'png' ) {
102: imageAlphaBlending($Resource, true);
103: imageSaveAlpha($Resource, true);
104: }
105: Api::Module()->Office()->Image()->_openResource( $Resource );
106: }
107: return Api::Module()->Office()->Image();
108: }
109:
110: /**
111: * @param File $File
112: *
113: * @return mixed
114: */
115: private function GetTypeFactory( File $File ) {
116: return str_replace( 'jpg', 'jpeg', strtolower( $File->GetExtension() ) );
117: }
118:
119: /**
120: * @param File $File
121: *
122: * @return string
123: */
124: private function GetLoadFactory( File $File ) {
125: return 'imagecreatefrom'.$this->GetTypeFactory( $File );
126: }
127: }
128: