changed git call from https to git readonly
[atutor.git] / mods / atutor_opencaps / opencaps / conversion_service / include / classes / ccformats / cc_Sami_format.php
1 <?php\r
2 /**\r
3  * Sami Class\r
4  */\r
5 class Sami extends CaptionFormat\r
6 {\r
7         private $textStyles = array();\r
8 \r
9         /**\r
10          * Imports a caption string into a CaptionCollection \r
11          *\r
12          * @param String $theCCString the caption file as string\r
13          * @return CaptionCollection $myCcCollection A CaptionCollection Object\r
14          */\r
15         public function importCC($theCCString)\r
16         {\r
17                 $ccTarget = '';\r
18                 \r
19         } // end importCC()\r
20         \r
21 \r
22         /**\r
23          * Exports a CaptionCollection object into a string\r
24          *\r
25          * @param CaptionCollection $theCollection A CaptionCollection Object\r
26          * @return String $captionString The caption as a String\r
27          */\r
28         public function exportCC($theCollection)\r
29         {\r
30                 \r
31                 $ccExport = '';\r
32         \r
33                 $myCollection = $theCollection->getCollection();\r
34         \r
35                 // start SAMI Caption\r
36                 $samiCaption = "";\r
37         \r
38                 // add header\r
39                 $samiCaption .= $this->getSamiHeader();\r
40                 \r
41                 // Caption counter\r
42                 $capCount = 0;\r
43 \r
44                 // Building Sami caption \r
45                 $fileContent = '';\r
46                 foreach ($myCollection as $captionObj)\r
47                 {\r
48         \r
49                         $capCount++;\r
50 \r
51                         // convert to qt to Sami time format\r
52                         $samiTimeIn = TimeUtil::timeQtToSami($captionObj->getInTime());\r
53                         $samiTimeOut = TimeUtil::timeQtToSami($captionObj->getOutTime());\r
54                         \r
55                         $captionStyles = $captionObj->getTextStyles();\r
56                         \r
57                         $fixCap = TxtFileTools::ccNewLineToBr($captionObj->getCaption(),' <br/>');\r
58                         \r
59                         // ading caption to String \r
60                                 //$samiCaption .= "". $this->getSamiCaption($samiTime,$fixCap,"QT");\r
61                         \r
62                         // new adding empty caption when time out\r
63                         $samiCaption .= "". $this->getSamiCaption($samiTimeIn,$samiTimeOut,$fixCap,$captionObj->getTextStyles());\r
64         \r
65                 } // end for each caption \r
66 \r
67                 //  close SAMi file\r
68                 $samiCaption .= $this->getSamiClose();\r
69                 \r
70                 $samiCaption .= "";\r
71                 \r
72                 $ccExport = $samiCaption;\r
73                                 \r
74                 return $ccExport;\r
75                 \r
76         } // end  exportCC()\r
77         \r
78         /**\r
79          * Verify if the caption file is a SAMI caption file \r
80         */\r
81         public function checkFormat($theCCString)\r
82         {\r
83                 \r
84         } // end checkFormat()\r
85 \r
86         /*\r
87          * Here functions to re-define\r
88          */\r
89         public function getName()\r
90         {\r
91                 return 'SAMI';\r
92         }\r
93         \r
94         public function getAbout()\r
95         {\r
96                 return 'This caption format can be played by Windows Media Player on Windows OS. ';\r
97         }\r
98         \r
99         public function getVersion()\r
100         {\r
101                 return '1.0';\r
102         }\r
103                 \r
104         public function getFileExtension()\r
105         {\r
106                 return 'smi';\r
107         }\r
108         \r
109         public function getIdPattern()\r
110         {\r
111                 $idPattern = '/(<SAMI>)/';\r
112                 \r
113                 return $idPattern;\r
114         }\r
115 \r
116         public function allowsTextStyles()\r
117         {\r
118                 return '1';\r
119         }\r
120         \r
121         public function template()\r
122         {\r
123                 $ccTemplate = '';\r
124                 \r
125                 return $ccTemplate;\r
126         }\r
127 \r
128 \r
129 /*////////////////////////////////////////////////////////\r
130         Functions for SAMI conversion\r
131 //////////////////////////////////////////////////////*/\r
132 \r
133 /**\r
134  * creates a SAMI Caption \r
135  * @return String $samiCaption A SAMI formatted caption \r
136  * @param int $capInTime Caption start time in miliseconds 1 sec = 1000\r
137  * @param int $capOutTime Caption end time in miliseconds 1 sec = 1000\r
138  * @param String $caption caption, with all styles\r
139  * @param Array $txtStyles Array with text styles in the caption \r
140  */\r
141 private function getSamiCaption($capInTime,$capOutTime,$caption,$txtStyles)\r
142 {\r
143         $samiCaption = "";\r
144         $captionReFormated = "";\r
145                 \r
146         // Find if text alignment in $txtStyles array\r
147         if (isset($txtStyles['text-align']))\r
148         {\r
149                 if ($txtStyles['text-align']=='right')\r
150                 {\r
151                         $caption = '<table align=right><span style="color:#00FFFF">'.$caption.'</span></table>';\r
152                 }\r
153                 else if ($txtStyles['text-align']=='left')\r
154                 {\r
155                         $caption = '<table align=left><span style="color:#FCCA03">'.$caption.'</span></table>';\r
156                 }\r
157                 else if ($txtStyles['text-align']=='center')\r
158                 {\r
159                         $caption = '<table align=center>'.$caption.'</table>';\r
160                 }\r
161         }\r
162                 \r
163                 \r
164     // Create SAMI Caption\r
165         $samiCaption = '\r
166         <SYNC start='.$capInTime.'><P>'.$caption.'</P></SYNC>';\r
167                 \r
168         // add an empty caption when caption finishes if caption's lenght is more than x sec\r
169         // prevents caption for displaying it if next caption is to ahead  //// still working\r
170                 $captionLenght = $capOutTime-$capInTime; \r
171         if ($captionLenght>2000)\r
172         {\r
173         $samiCaption .= '\r
174         <SYNC start='.$capOutTime.'><P>&nbsp;</P></SYNC>';\r
175         }\r
176         \r
177         return $samiCaption;\r
178         \r
179 } // end getSamiCaption\r
180 \r
181 \r
182 // SAMI Header \r
183 private function getSamiHeader()\r
184 {\r
185 // common vars\r
186 $textFont = "Arial";\r
187 $textFontWeight = "normal";\r
188 $textSize = "18";\r
189 $textJustify = "center";\r
190 \r
191 // unique vars for SAMI\r
192 $capTitle = 'This is a sample SAMI 1.0 caption';\r
193 $textHtmlColor = "#FFFFFF";\r
194 $bgHtmlColor = "#000000";\r
195 $capLangName = "English";\r
196 $capLangCode= "EN-US-CC";\r
197 \r
198 $capSAMI_header = '<SAMI>\r
199 <HEAD>\r
200 <TITLE>'.$capTitle.'</TITLE>\r
201 <STYLE TYPE="text/css">\r
202 <!--\r
203 P { margin:  2px 20% 0px 20%; font-size:'.$textSize.'; font-family: '.$textFont.'; font-weight: '.$textFontWeight.'; color: '.$textHtmlColor.'; background-color: '.$bgHtmlColor.'; text-align: '.$textJustify.'; }\r
204 .ENUSCC { name: '.$capLangName.'; lang: '.$capLangCode.'; }\r
205 .txtRight { font-size:'.$textSize.'; font-family: '.$textFont.'; font-weight: '.$textFontWeight.'; color: #00FFFF; background-color: '.$bgHtmlColor.'; text-align: right; } \r
206 .txtLeft { font-size:'.$textSize.'; font-family: '.$textFont.'; font-weight: '.$textFontWeight.'; color: #FCCA03; background-color: '.$bgHtmlColor.'; text-align: left; } \r
207 -->\r
208 </STYLE>\r
209 </HEAD>\r
210 <BODY>';\r
211     return $capSAMI_header;\r
212 } // end getSamiHeader()\r
213 \r
214 \r
215 // SAMI Close\r
216 private function getSamiClose()\r
217 {\r
218 $capSAMI_close = '\r
219 </BODY>\r
220 </SAMI>';\r
221     return $capSAMI_close;\r
222 }\r
223 \r
224         \r
225         \r
226 } // end CCsami Class\r
227 ?>