Directory: | ./ |
---|---|
File: | tmp_project/PhoenixPresentation/tmp_project/PhoenixSlider/src/main.cpp |
Date: | 2025-03-24 18:12:43 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 248 | 252 | 98.4% |
Branches: | 136 | 168 | 81.0% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | |||
2 | /*************************************** | ||
3 | Auteur : Pierre Aubert | ||
4 | Mail : pierre.aubert@lapp.in2p3.fr | ||
5 | Licence : CeCILL-C | ||
6 | ****************************************/ | ||
7 | |||
8 | #include <fstream> | ||
9 | #include <iostream> | ||
10 | |||
11 | #include "PPath.h" | ||
12 | #include "OptionParser.h" | ||
13 | |||
14 | ///Create the OptionParser of this program | ||
15 | /** @return OptionParser of this program | ||
16 | */ | ||
17 | 1 | OptionParser createOptionParser(){ | |
18 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | OptionParser parser(true, __PROGRAM_VERSION__); |
19 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | parser.setExampleLongOption("phoenix_slider --input=fileInput.png --output=output.html"); |
20 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | parser.setExampleShortOption("phoenix_slider -i fileInput1.png fileInput2.png fileInput3.mp4 fileInput4.png -o output.html"); |
21 | |||
22 |
4/4✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
✓ Branch 10 taken 1 times.
|
1 | parser.addOption("input", "i", OptionType::FILENAME, true, "list of input files"); |
23 | |||
24 |
1/1✓ Branch 1 taken 1 times.
|
1 | PString defaultOutput("output.html"); |
25 |
5/5✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
✓ Branch 10 taken 1 times.
✓ Branch 13 taken 1 times.
|
1 | parser.addOption("output", "o", defaultOutput, "name of the output HTML file"); |
26 | |||
27 |
1/1✓ Branch 1 taken 1 times.
|
1 | PString defaultColor("black"); |
28 |
5/5✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
✓ Branch 10 taken 1 times.
✓ Branch 13 taken 1 times.
|
1 | parser.addOption("numbercolor", "n", defaultColor, "color of the slides' number (black, white, blue, green, red, yellow, gray(by default))"); |
29 | |||
30 |
1/1✓ Branch 1 taken 1 times.
|
1 | PString defaultTextFootpage(""); |
31 |
5/5✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
✓ Branch 10 taken 1 times.
✓ Branch 13 taken 1 times.
|
1 | parser.addOption("footpage", "f", defaultTextFootpage, "text to be written on the foot page"); |
32 | |||
33 |
1/1✓ Branch 1 taken 1 times.
|
1 | PString defaultFootpageColor("white"); |
34 |
5/5✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
✓ Branch 10 taken 1 times.
✓ Branch 13 taken 1 times.
|
1 | parser.addOption("footpagecolor", "g", defaultFootpageColor, "color of the foot page (black, white, blue, green, red, yellow, white(by default))"); |
35 | |||
36 | 2 | return parser; | |
37 | 1 | } | |
38 | |||
39 | ///Make the HTML slider header | ||
40 | /** @param[out] fs : file to be completed | ||
41 | * @param numberColor : color of the slide number (black, white, red, blue, green, yellow, gray(by default)) | ||
42 | * @param footPageColor : color of the foot page | ||
43 | */ | ||
44 | 1 | void slider_saveHtmlHeader(std::ofstream & fs, const PString & numberColor, const PString & footPageColor){ | |
45 | 1 | fs << "<!DOCTYPE html>\n"; | |
46 | 1 | fs << "<html>\n"; | |
47 | 1 | fs << "\t<head>\n"; | |
48 | 1 | fs << "\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n"; | |
49 | 1 | fs << "\t\t<style>\n"; | |
50 | 1 | fs << "\t\t\t* {box-sizing: border-box;}\n"; | |
51 | 1 | fs << "\t\t\tbody {\n"; | |
52 | // fs << "\t\t\t\tfont-family: Verdana, sans-serif;\n"; | ||
53 | 1 | fs << "\t\t\t\tfont-family: Arial, sans-serif;\n"; | |
54 | 1 | fs << "\t\t\t\tbackground-color: black;\n"; | |
55 | // fs << "\t\t\t\t/* margin: auto; */\n"; | ||
56 | 1 | fs << "\t\t\t}\n"; | |
57 | 1 | fs << "\t\t\t.mySlides {\n"; | |
58 | 1 | fs << "\t\t\t\tdisplay: none;\n"; | |
59 | 1 | fs << "\t\t\t\tvertical-align: middle;\n"; | |
60 | 1 | fs << "\t\t\t}\n"; | |
61 | 1 | fs << "\t\t\timg {\n"; | |
62 | 1 | fs << "\t\t\t\tvertical-align: middle;\n"; | |
63 | 1 | fs << "\t\t\t}\n"; | |
64 | 1 | fs << "\t\t\t\n"; | |
65 | 1 | fs << "\t\t\t/* Slideshow container */\n"; | |
66 | 1 | fs << "\t\t\t.slideshow-container {\n"; | |
67 | // fs << "\t\t\t\t/* max-width: 1000px; */ /*Limite pour rien la taille des slides*/\n"; | ||
68 | 1 | fs << "\t\t\t\tposition: relative;\n"; | |
69 | 1 | fs << "\t\t\t\tmargin: auto;\n"; | |
70 | 1 | fs << "\t\t\t}\n"; | |
71 | 1 | fs << "\t\t\t\n"; | |
72 | 1 | fs << "\t\t\t/* Caption text */\n"; | |
73 | 1 | fs << "\t\t\t.text {\n"; | |
74 | // fs << "\t\t\t\t/* color: #f2f2f2; */\n"; | ||
75 | 1 | fs << "\t\t\t\tcolor: "<<footPageColor<<";\n"; | |
76 | // fs << "\t\t\t\t/* color: black; */\n"; | ||
77 | 1 | fs << "\t\t\t\tfont-size: 30px;\n"; | |
78 | 1 | fs << "\t\t\t\tpadding: 8px 12px;\n"; | |
79 | 1 | fs << "\t\t\t\tposition: absolute;\n"; | |
80 | 1 | fs << "\t\t\t\tbottom: 8px;\n"; | |
81 | 1 | fs << "\t\t\t\tmargin-left: 40px;\n"; | |
82 | // fs << "\t\t\t\twidth: 100%;\n"; | ||
83 | 1 | fs << "\t\t\t\ttext-align: left;\n"; | |
84 | 1 | fs << "\t\t\t}\n"; | |
85 | 1 | fs << "\t\t\t\n"; | |
86 | 1 | fs << "\t\t\t/* Number text (1/3 etc) */\n"; | |
87 | 1 | fs << "\t\t\t.numbertext {\n"; | |
88 | // fs << "\t\t\t\t/* color: #f2f2f2; */\n"; | ||
89 | 1 | fs << "\t\t\t\tcolor: "<<numberColor<<";\n"; | |
90 | 1 | fs << "\t\t\t\tfont-size: 40px;\n"; | |
91 | 1 | fs << "\t\t\t\tpadding: 8px 12px;\n"; | |
92 | 1 | fs << "\t\t\t\tposition: absolute;\n"; | |
93 | // fs << "\t\t\t\t/* top: 0; */\n"; | ||
94 | 1 | fs << "\t\t\t\tbottom: 8px;\n"; | |
95 | 1 | fs << "\t\t\t\twidth: 100%;\n"; | |
96 | 1 | fs << "\t\t\t\ttext-align: right;\n"; | |
97 | 1 | fs << "\t\t\t}\n"; | |
98 | 1 | fs << "\t\t\t\n"; | |
99 | 1 | fs << "\t\t\t.slideContent{\n"; | |
100 | 1 | fs << "\t\t\t\tcolor: "<<footPageColor<<";\n"; | |
101 | 1 | fs << "\t\t\t\tdisplay: block;\n"; | |
102 | 1 | fs << "\t\t\t\tposition: absolute;\n"; | |
103 | 1 | fs << "\t\t\t\twidth: 100%;\n"; | |
104 | 1 | fs << "\t\t\t\ttop: 0px;\n"; | |
105 | 1 | fs << "\t\t\t}\n"; | |
106 | |||
107 | 1 | fs << "\t\t\t.slideContent h1{\n"; | |
108 | 1 | fs << "\t\t\t\tcolor: "<<footPageColor<<";\n"; | |
109 | 1 | fs << "\t\t\t\ttext-align: center;\n"; | |
110 | 1 | fs << "\t\t\t\tfont-size: 60px;\n"; | |
111 | 1 | fs << "\t\t\t}\n"; | |
112 | |||
113 | 1 | fs << "\t\t\t.slideContent .slidebody{\n"; | |
114 | 1 | fs << "\t\t\t\tcolor: "<<footPageColor<<";\n"; | |
115 | 1 | fs << "\t\t\t\tmargin-left: 40px;\n"; | |
116 | 1 | fs << "\t\t\t\ttext-align: left;\n"; | |
117 | 1 | fs << "\t\t\t\tfont-size: 40px;\n"; | |
118 | 1 | fs << "\t\t\t}\n"; | |
119 | |||
120 | // fs << "\t\t\t/*.vertical-center {\n"; | ||
121 | // fs << "\t\t\t\tmargin: 0;\n"; | ||
122 | // fs << "\t\t\t\tposition: absolute;\n"; | ||
123 | // fs << "\t\t\t\ttop: 50%;\n"; | ||
124 | // fs << "\t\t\t\t-ms-transform: translateY(-50%);\n"; | ||
125 | // fs << "\t\t\t\ttransform: translateY(-50%);\n"; | ||
126 | // fs << "\t\t\t}*/\n"; | ||
127 | // fs << \t"\t\t\n"; | ||
128 | 1 | fs << "\t\t\t/* The dots/bullets/indicators */\n"; | |
129 | 1 | fs << "\t\t\t.dot {\n"; | |
130 | 1 | fs << "\t\t\t\theight: 15px;\n"; | |
131 | 1 | fs << "\t\t\t\twidth: 15px;\n"; | |
132 | 1 | fs << "\t\t\t\tmargin: 0 2px;\n"; | |
133 | 1 | fs << "\t\t\t\tbackground-color: #bbb;\n"; | |
134 | 1 | fs << "\t\t\t\tborder-radius: 50%;\n"; | |
135 | 1 | fs << "\t\t\t\tdisplay: inline-block;\n"; | |
136 | 1 | fs << "\t\t\t\ttransition: background-color 0.6s ease;\n"; | |
137 | 1 | fs << "\t\t\t}\n"; | |
138 | 1 | fs << "\t\t\t\n"; | |
139 | 1 | fs << "\t\t\t.active {\n"; | |
140 | 1 | fs << "\t\t\t\tbackground-color: #717171;\n"; | |
141 | 1 | fs << "\t\t\t}\n"; | |
142 | 1 | fs << "\t\t\t\n"; | |
143 | 1 | fs << "\t\t\t/* Fading animation */\n"; | |
144 | 1 | fs << "\t\t\t.fade {\n"; | |
145 | 1 | fs << "\t\t\t\tanimation-name: fade;\n"; | |
146 | 1 | fs << "\t\t\t\tanimation-duration: 1.5s;\n"; | |
147 | 1 | fs << "\t\t\t}\n"; | |
148 | 1 | fs << "\t\t\t\n"; | |
149 | 1 | fs << "\t\t\t@keyframes fade {\n"; | |
150 | 1 | fs << "\t\t\t\tfrom {opacity: .4}\n"; | |
151 | 1 | fs << "\t\t\t\tto {opacity: 1}\n"; | |
152 | 1 | fs << "\t\t\t}\n"; | |
153 | 1 | fs << "\t\t\t\n"; | |
154 | 1 | fs << "\t\t\t/* On smaller screens, decrease text size */\n"; | |
155 | 1 | fs << "\t\t\t@media only screen and (max-width: 300px) {\n"; | |
156 | 1 | fs << "\t\t\t\t.text {font-size: 11px}\n"; | |
157 | 1 | fs << "\t\t\t}\n"; | |
158 | 1 | fs << "\t\t</style>\n"; | |
159 | 1 | fs << "\t</head>\n"; | |
160 | 1 | } | |
161 | |||
162 | ///Make the HTML slider javascript | ||
163 | /** @param[out] fs : file to be completed | ||
164 | */ | ||
165 | 1 | void slider_saveJavascript(std::ofstream & fs){ | |
166 | 1 | fs << "<script>\n"; | |
167 | 1 | fs << "let slideIndex = 1;\n"; | |
168 | 1 | fs << "showSlides(slideIndex);\n"; | |
169 | 1 | fs << "\n"; | |
170 | 1 | fs << "// Next/previous controls\n"; | |
171 | 1 | fs << "function plusSlides(n){\n"; | |
172 | 1 | fs << "\tshowSlides(slideIndex += n);\n"; | |
173 | 1 | fs << "}\n"; | |
174 | 1 | fs << "\n"; | |
175 | 1 | fs << "// Thumbnail image controls\n"; | |
176 | 1 | fs << "function currentSlide(n){\n"; | |
177 | 1 | fs << "\tshowSlides(slideIndex = n);\n"; | |
178 | 1 | fs << "}\n"; | |
179 | 1 | fs << "\n"; | |
180 | 1 | fs << "function showSlides(n) {\n"; | |
181 | 1 | fs << "\tlet i;\n"; | |
182 | 1 | fs << "\tlet slides = document.getElementsByClassName(\"mySlides\");\n"; | |
183 | // fs << "\t// let dots = document.getElementsByClassName(\"dot\");\n"; | ||
184 | 1 | fs << "\tif(n > slides.length){slideIndex = 1}\n"; | |
185 | 1 | fs << "\tif(n < 1){slideIndex = slides.length}\n"; | |
186 | 1 | fs << "\tfor(i = 0; i < slides.length; i++){\n"; | |
187 | 1 | fs << "\t\tslides[i].style.display = \"none\";\n"; | |
188 | 1 | fs << "\t}\n"; | |
189 | // fs << "\t// for (i = 0; i < dots.length; i++) {\n"; | ||
190 | // fs << "\t// dots[i].className = dots[i].className.replace(\" active\", \"\");\n"; | ||
191 | // fs << "\t// }\n"; | ||
192 | 1 | fs << "\tslides[slideIndex-1].style.display = \"block\";\n"; | |
193 | // fs << "\t// dots[slideIndex-1].className += \" active\";\n"; | ||
194 | 1 | fs << "}\n"; | |
195 | 1 | fs << "\n"; | |
196 | 1 | fs << "document.onkeydown = function(e){\n"; | |
197 | 1 | fs << "\tswitch(e.keyCode){\n"; | |
198 | 1 | fs << "\t\tcase 37:\n"; | |
199 | 1 | fs << "\t\t\t//left\n"; | |
200 | 1 | fs << "\t\t\te.preventDefault();\n"; | |
201 | 1 | fs << "\t\t\tslideIndex--;\n"; | |
202 | 1 | fs << "\t\t\tshowSlides(slideIndex);\n"; | |
203 | 1 | fs << "\t\t\tbreak;\n"; | |
204 | 1 | fs << "\t\tcase 39:\n"; | |
205 | 1 | fs << "\t\t\t//right\n"; | |
206 | 1 | fs << "\t\t\te.preventDefault();\n"; | |
207 | 1 | fs << "\t\t\tslideIndex++;\n"; | |
208 | 1 | fs << "\t\t\tshowSlides(slideIndex);\n"; | |
209 | 1 | fs << "\t\t\tbreak;\n"; | |
210 | 1 | fs << "\t}\n"; | |
211 | 1 | fs << "}\n"; | |
212 | 1 | fs << "</script>\n"; | |
213 | 1 | } | |
214 | |||
215 | ///Save the HTML slide number | ||
216 | /** @param[out] fs : file to be written | ||
217 | * @param slideNumber : slide number | ||
218 | * @param footPage : string to be written in the footpage of the slides | ||
219 | */ | ||
220 | 8 | void slider_saveHtmlSlideNumber(std::ofstream & fs, long unsigned int slideNumber, const PString & footPage){ | |
221 |
2/2✓ Branch 0 taken 7 times.
✓ Branch 1 taken 1 times.
|
8 | if(slideNumber != 0lu){ |
222 | 7 | fs << "\t\t\t\t<div class=\"numbertext\">"<<(slideNumber + 1lu)<<"</div>\n"; | |
223 | |||
224 |
1/2✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
|
7 | if(footPage != ""){ |
225 | 7 | fs << "\t\t\t\t<div class=\"text\">"<<footPage<<"</div>\n"; | |
226 | } | ||
227 | } | ||
228 | 8 | } | |
229 | |||
230 | ///Make the html png slide | ||
231 | /** @param[out] fs : file to be completed | ||
232 | * @param filePng : file png to be in the slide | ||
233 | * @param slideNumber : slide number | ||
234 | * @param footPage : string to be written in the footpage of the slides | ||
235 | */ | ||
236 | 5 | void slider_saveHtmlSlidePng(std::ofstream & fs, const PPath & filePng, long unsigned int slideNumber, const PString & footPage) | |
237 | { | ||
238 | 5 | fs << "\t\t\t<div class=\"mySlides\">\n"; | |
239 | 5 | slider_saveHtmlSlideNumber(fs, slideNumber, footPage); | |
240 | 5 | fs << "\t\t\t\t<img src=\""<<filePng<<"\" style=\"width:100%\">\n"; | |
241 | // fs << "\t\t\t\t<div class=\"text\">Caption One</div>\n"; | ||
242 | 5 | fs << "\t\t\t</div>\n"; | |
243 | 5 | } | |
244 | |||
245 | ///Make the html mp4 slide | ||
246 | /** @param[out] fs : file to be completed | ||
247 | * @param fileMp4 : mp4 file to be in the slide | ||
248 | * @param slideNumber : slide number | ||
249 | * @param footPage : string to be written in the footpage of the slides | ||
250 | */ | ||
251 | 2 | void slider_saveHtmlSlideMp4(std::ofstream & fs, const PPath & fileMp4, long unsigned int slideNumber, const PString & footPage){ | |
252 |
1/1✓ Branch 1 taken 2 times.
|
2 | PString loopAttribute(""); |
253 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | if(fileMp4.size() > 8lu){ |
254 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
|
2 | PString baseName(fileMp4.eraseExtension()); |
255 |
3/3✓ Branch 3 taken 2 times.
✓ Branch 7 taken 1 times.
✓ Branch 8 taken 1 times.
|
2 | if(baseName.substr(baseName.size() - 4lu, baseName.size()) == "loop"){ |
256 |
1/1✓ Branch 1 taken 1 times.
|
1 | loopAttribute = " loop"; |
257 | } | ||
258 | 2 | } | |
259 | |||
260 |
1/1✓ Branch 1 taken 2 times.
|
2 | fs << "\t\t\t<div class=\"mySlides\">\n"; |
261 |
1/1✓ Branch 1 taken 2 times.
|
2 | slider_saveHtmlSlideNumber(fs, slideNumber, footPage); |
262 |
3/3✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
✓ Branch 7 taken 2 times.
|
2 | fs << "\t\t\t\t<video style=\"width:100%\" autoplay muted"<<loopAttribute<<">\n"; |
263 |
1/1✓ Branch 1 taken 2 times.
|
2 | fs << "\t\t\t\t <!-- Be careful, if you do not have sound, check if the video has MP3 sound and not AC3 -->\n"; |
264 |
3/3✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
✓ Branch 7 taken 2 times.
|
2 | fs << "\t\t\t\t <source src=\""<<fileMp4<<"\" type=\"video/mp4\">\n"; |
265 |
1/1✓ Branch 1 taken 2 times.
|
2 | fs << "\t\t\t\t</video>\n"; |
266 | |||
267 | // fs << "\t\t\t\t<div class=\"text\">Caption One</div>\n"; | ||
268 |
1/1✓ Branch 1 taken 2 times.
|
2 | fs << "\t\t\t</div>\n"; |
269 | 2 | } | |
270 | |||
271 | ///Save the html slide with a html file | ||
272 | /** @param[out] fs : file to be written | ||
273 | * @param fileTex : name of the tex file to be red | ||
274 | * @param slideNumber : slide number | ||
275 | * @param footPage : string to be written in the footpage of the slides | ||
276 | */ | ||
277 | 1 | void slider_saveHtmlSlideHtml(std::ofstream & fs, const PPath & fileTex, long unsigned int slideNumber, const PString & footPage) | |
278 | { | ||
279 |
1/1✓ Branch 1 taken 1 times.
|
1 | PString backGroundFile(CMAKE_INSTALL_PREFIX "/share/PhoenixSlider/theme2.png"); |
280 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | if(slideNumber == 0){ |
281 | ✗ | backGroundFile = CMAKE_INSTALL_PREFIX "/share/PhoenixSlider/firstTheme.png"; | |
282 | } | ||
283 |
1/1✓ Branch 1 taken 1 times.
|
1 | fs << "\t\t\t<div class=\"mySlides\">\n"; |
284 |
1/1✓ Branch 1 taken 1 times.
|
1 | slider_saveHtmlSlideNumber(fs, slideNumber, footPage); |
285 |
3/3✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
|
1 | fs << "\t\t\t\t<img src=\""<<backGroundFile<<"\" style=\"width:100%\">\n"; |
286 |
1/1✓ Branch 1 taken 1 times.
|
1 | fs << "\t\t\t\t<div class=\"slideContent\">\n"; |
287 |
3/3✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
|
1 | fs << fileTex.loadFileContent() << std::endl; |
288 |
1/1✓ Branch 1 taken 1 times.
|
1 | fs << "\t\t\t\t</div>\n"; |
289 |
1/1✓ Branch 1 taken 1 times.
|
1 | fs << "\t\t\t</div>\n"; |
290 | 1 | } | |
291 | |||
292 | ///Make the beamer tex slide | ||
293 | /** @param[out] fs : file to be completed | ||
294 | * @param filePng : file png to be in the slide | ||
295 | * @param slideNumber : slide number | ||
296 | * @param footPage : string to be written in the footpage of the slides | ||
297 | */ | ||
298 | 8 | void slider_saveHtmlSlide(std::ofstream & fs, const PPath & filePng, long unsigned int slideNumber, const PString & footPage){ | |
299 | //Check if the extention is png or mp4 | ||
300 | // If the extention is html I need to put the content into a slide | ||
301 | // I need also to add the theme and the page number | ||
302 | |||
303 |
1/1✓ Branch 1 taken 8 times.
|
8 | PString fileExtention(filePng.getExtension()); |
304 |
2/2✓ Branch 1 taken 5 times.
✓ Branch 2 taken 3 times.
|
8 | if(fileExtention == "png"){ |
305 |
1/1✓ Branch 1 taken 5 times.
|
5 | slider_saveHtmlSlidePng(fs, filePng, slideNumber, footPage); |
306 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
3 | }else if(fileExtention == "mp4"){ |
307 |
1/1✓ Branch 1 taken 2 times.
|
2 | slider_saveHtmlSlideMp4(fs, filePng, slideNumber, footPage); |
308 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | }else if(fileExtention == "html"){ |
309 |
1/1✓ Branch 1 taken 1 times.
|
1 | slider_saveHtmlSlideHtml(fs, filePng, slideNumber, footPage); |
310 | }else{ | ||
311 | ✗ | std::cerr << "slider_saveHtmlSlide : unknown extention '"<<fileExtention<<"' of file '"<<filePng<<"'" << std::endl; | |
312 | } | ||
313 | 8 | } | |
314 | |||
315 | ///Make the tex slides | ||
316 | /** @param outputFileName : output file name | ||
317 | * @param listInputFile : list of the png slides input | ||
318 | * @param numberColor : color of the slide number (black, white, red, blue, green, yellow, gray(by default)) | ||
319 | * @param footPage : string to be written in the footpage of the slides | ||
320 | * @param footPageColor : color of the foot page | ||
321 | */ | ||
322 | 1 | void slider_makeHtmlSlides(const PPath & outputFileName, const PVecPath & listInputFile, const PString & numberColor, | |
323 | const PString & footPage, const PString & footPageColor) | ||
324 | { | ||
325 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
|
1 | if(outputFileName == "" || listInputFile.size() == 0lu){return;} |
326 | |||
327 |
1/1✓ Branch 1 taken 1 times.
|
1 | std::ofstream fs; |
328 |
1/1✓ Branch 2 taken 1 times.
|
1 | fs.open(outputFileName.c_str()); |
329 |
2/3✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
|
1 | if(!fs.is_open()){ |
330 | ✗ | std::cerr << "slider_makeHtmlSlides : can't open file '" << outputFileName << "'" << std::endl; | |
331 | ✗ | return; | |
332 | } | ||
333 |
1/1✓ Branch 1 taken 1 times.
|
1 | slider_saveHtmlHeader(fs, numberColor, footPageColor); |
334 | |||
335 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | fs << "\t<body>" << std::endl; |
336 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | fs << "\t\t<div class=\"slideshow-container\">" << std::endl; |
337 |
1/1✓ Branch 1 taken 1 times.
|
1 | PString previousFile(""); |
338 | 1 | long unsigned int i(-1lu); | |
339 |
2/2✓ Branch 4 taken 8 times.
✓ Branch 5 taken 1 times.
|
9 | for(PVecPath::const_iterator it(listInputFile.begin()); it != listInputFile.end(); ++it){ |
340 |
1/1✓ Branch 2 taken 8 times.
|
8 | PVecString listFileName = it->split('/'); |
341 |
1/1✓ Branch 2 taken 8 times.
|
8 | PString currentFileName(listFileName.back()); |
342 | |||
343 |
5/6✓ Branch 1 taken 7 times.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 7 times.
✓ Branch 6 taken 1 times.
✓ Branch 7 taken 7 times.
|
8 | if(previousFile.size() < 6lu || currentFileName.size() < 6lu){ |
344 | 1 | ++i; | |
345 | }else{ | ||
346 |
4/4✓ Branch 2 taken 7 times.
✓ Branch 6 taken 7 times.
✓ Branch 11 taken 6 times.
✓ Branch 12 taken 1 times.
|
7 | if(previousFile.substr(0, previousFile.size() - 6lu) != currentFileName.substr(0, currentFileName.size() - 6lu)){ |
347 | 6 | ++i; | |
348 | } | ||
349 | } | ||
350 |
1/1✓ Branch 1 taken 8 times.
|
8 | previousFile = currentFileName; |
351 |
1/1✓ Branch 2 taken 8 times.
|
8 | slider_saveHtmlSlide(fs, *it, i, footPage); |
352 | 8 | } | |
353 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | fs << "\t\t</div>" << std::endl; |
354 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | fs << "\t\t<br>" << std::endl; |
355 |
1/1✓ Branch 1 taken 1 times.
|
1 | slider_saveJavascript(fs); |
356 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | fs << "\t</body>" << std::endl; |
357 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | fs << "</html>\n" << std::endl; |
358 | |||
359 |
1/1✓ Branch 1 taken 1 times.
|
1 | fs.close(); |
360 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | } |
361 | |||
362 | 1 | int main(int argc, char** argv){ | |
363 |
1/1✓ Branch 1 taken 1 times.
|
1 | OptionParser parser = createOptionParser(); |
364 |
1/1✓ Branch 1 taken 1 times.
|
1 | parser.parseArgument(argc, argv); |
365 | |||
366 |
1/1✓ Branch 1 taken 1 times.
|
1 | const OptionMode & defaultMode = parser.getDefaultMode(); |
367 | 1 | PVecPath listInputFile; | |
368 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | defaultMode.getValue(listInputFile, "input"); |
369 | |||
370 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | PPath outputFile("output.html"); |
371 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | defaultMode.getValue(outputFile, "output"); |
372 | |||
373 |
1/1✓ Branch 1 taken 1 times.
|
1 | PString numberColor("black"); |
374 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | defaultMode.getValue(numberColor, "numbercolor"); |
375 | |||
376 |
1/1✓ Branch 1 taken 1 times.
|
1 | PString footPage(""); |
377 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | defaultMode.getValue(footPage, "footpage"); |
378 | |||
379 |
1/1✓ Branch 1 taken 1 times.
|
1 | PString footPageColor("white"); |
380 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | defaultMode.getValue(footPageColor, "footpagecolor"); |
381 | |||
382 |
1/1✓ Branch 1 taken 1 times.
|
1 | slider_makeHtmlSlides(outputFile, listInputFile, numberColor, footPage, footPageColor); |
383 | 1 | return 0; | |
384 | 1 | } | |
385 | |||
386 |