20 parser.
setExampleShortOption(
"phoenix_inkscapesplitter -i file1.svg file1.svg fileN.svg -o output/dir/");
25 parser.
addOption(
"output",
"o", defaultOutputDir,
"Output directory");
35 long unsigned int end;
44 typedef std::vector<long unsigned int>
PSlide;
67 long unsigned int i(0lu);
68 for(PVecXml::const_iterator itLayer(vecLayer.begin()); itLayer != vecLayer.end(); ++itLayer){
70 std::cout <<
"\tlayer '" << inkscapeLabel <<
"'";
72 long unsigned int begin(0lu), end(0lu);
73 bool isBeginDefined(
false), isEndDefine(
false);
75 for(PVecString::iterator it(listNb.begin()); it != listNb.end(); ++it){
78 end = atol(it->c_str());
81 begin = atol(it->c_str());
82 isBeginDefined =
true;
85 if(*it ==
"N" && isBeginDefined){
87 std::cout <<
"\t=> until end";
92 std::cout << std::endl;
93 if(!isBeginDefined && !isEndDefine){
100 if(isEndDefine){layer.
end = end;}
101 else{layer.
end = begin;}
102 vecLayerSlide.push_back(layer);
112 long unsigned int i(0lu);
113 for(PVecLayer::const_iterator it(vecLayerSlide.begin()); it != vecLayerSlide.end(); ++it){
114 if(index >= it->begin && index <= it->end){
126 if(vecLayerSlide.size() == 0lu){
return;}
127 PVecLayer::iterator it(vecLayerSlide.begin());
128 long unsigned int minSlide(it->begin), maxSlide(it->end);
130 while(it != vecLayerSlide.end()){
131 if(it->begin < minSlide){minSlide = it->begin;}
132 if(it->end > maxSlide){maxSlide = it->end;}
135 for(PVecLayer::iterator itCmd(vecLayerSlide.begin()); itCmd != vecLayerSlide.end(); ++itCmd){
136 if(itCmd->command ==
"UntilEnd"){
137 itCmd->end = maxSlide;
140 for(
long unsigned int i(minSlide); i < maxSlide + 1lu; ++i){
143 vecSlide.push_back(slide);
169 long unsigned int i(0lu);
170 for(PVecSlide::const_iterator itSlide(vecSlides.begin()); itSlide != vecSlides.end(); ++itSlide){
171 PXml tmpRoot(lighRoot);
174 const PSlide & slide = *itSlide;
175 for(PSlide::const_iterator it(slide.begin()); it != slide.end(); ++it){
177 PXml tmpLayer(vecLayerXml[*it]);
191 std::cerr <<
"saveSlides : can't save svg file '"<<outputSlide<<
"'" << std::endl;
200 if(system(command.c_str()) != 0){
201 std::cerr <<
"saveSlides : can't create png file with command '"<<command<<
"'" << std::endl;
205 command =
PString(
"rm ") + outputSlide;
206 if(system(command.c_str()) != 0){
207 std::cerr <<
"saveSlides : can't remove temporary svg file with command '"<<command<<
"'" << std::endl;
220 if(inputFile ==
""){
return false;}
223 std::cerr <<
"processFileSvg : can't load file '"<<inputFile<<
"'" << std::endl;
233 std::cerr <<
"processFileSvg : can't find 'svg' balise in root" << std::endl;
244 std::cerr <<
"processFileSvg : can't find 'g' balise in svg" << std::endl;
247 long unsigned int nbCalque(vecLayer.size());
248 std::cout <<
"processFileSvg : get " << nbCalque <<
" layer";
249 if(nbCalque > 1lu){std::cout <<
"s";}
250 std::cout << std::endl;
254 if(vecLayerSlide.size() == 0lu){
255 std::cerr <<
"processFileSvg : no layer defined with -begin-end synthax" << std::endl;
264 *svgPtr = svgNoLayer;
269 bool b =
saveSlides(outputMode, baseOutputSlideName, vecSlides, vecLayer, lighRoot);
279 if(listInputFile.size() == 0lu){
280 std::cerr <<
"processFiles : no input file" << std::endl;
284 for(std::vector<PPath>::const_iterator it(listInputFile.begin()); it != listInputFile.end() && b; ++it){
290 int main(
int argc,
char** argv){
295 std::vector<PPath> listInputFile;
296 defaultMode.
getValue(listInputFile,
"input");
std::vector< PString > PVecString
Describe a mode in the program arguments.
bool getValue(T &value, const PString &optionName) const
Get the value of the option.
Parse the options passed to a program.
void parseArgument(int argc, char **argv)
Parse the arguments passed to the program.
void addOption(const PString &longOption, const PString &shortOption, OptionType::OptionType optionType, bool isRequired, const PString &docString)
Add an option in the OptionParser.
void setExampleShortOption(const PString &example)
Set the example usage of the program.
void setExampleLongOption(const PString &example)
Set the example usage of the program.
const OptionMode & getDefaultMode() const
Get default mode.
Path of a directory or a file.
bool saveFileContent(const PString &content) const
Save a PString in a file.
PPath & eraseExtension()
Erase the extension of the PPath.
PPath getFileName() const
Get the name of the file, from last char to /.
std::vector< PString > split(char separator) const
Cut a PString on the given separator char.
const PString & getValue() const
Get the variable p_value.
const std ::vector< PXml > & getVecChild() const
Get the variable p_vecChild.
void setName(const PString &name)
Set the variable p_name, of type 'PString'.
std::string valueToString(const T &val)
Convert a type into a string.
void pinkscape_loadSlideMap(PMapSlide &mapFormula, const PPath &baseOutputName)
Load the map file of all the formulae if it exists.
void pinkscape_saveSlideMap(const PMapSlide &mapFormula, const PPath &baseOutputName)
Save the map file of the formulae to avoid extra latex call.
bool pinkscape_isSlideKnown(POutoutMode &outputMode, const PPath &outputSlide, const PString &slideContent)
Check if the slide we are going to save was already saved (with the same content) or not.
bool pxml_getVecChildIfExist(PVecXml &vecMatch, const PXml &xml, const PString &childName)
Get the vector of childs with given name if exist.
PXml pxml_eraseVecChild(const PXml &xml, const PString &childName)
Erase the childs of the current xml if it has childName as name.
bool pxml_getAttrIfExist(PXmlAttr &attr, const PXml &xml, const PString &attrName)
Get the attribute with given name if exist.
PString pxml_baliseStr(const PXml &xml, bool isSvg)
Convert xml in string.
void pxml_setAttr(PXml &xml, const PString &nameAttr, const PString &valueAttr)
Set a value to an attribute.
bool pxml_parserFile(PXml &xml, const PPath &fileName, bool isSvg)
Parse a PXml with a file.
bool pxml_getChildIfExist(PXml &match, const PXml &xml, const PString &childName)
Get the child with given name if exist.
PXml * pxml_getChildPtr(PXml &xml, const PString &childName)
Get the child with given name if exist.
std::vector< PXml > PVecXml
Vector of PXml.
std::vector< PSlide > PVecSlide
Define the layer in slide.
std::vector< PLayer > PVecLayer
Vector of layer.
PString getInkscapeLabel(const PXml &layerXml)
Get the inkscape label of current PXml.
void createVecSlide(PVecSlide &vecSlide, PVecLayer &vecLayerSlide)
Create the vector of slides.
int main(int argc, char **argv)
void createSlideWithLayer(PSlide &slide, const PVecLayer &vecLayerSlide, long unsigned int index)
Create the slide to be generated.
int processFiles(const std::vector< PPath > &listInputFile)
Process all the input files.
bool saveSlides(POutoutMode &outputMode, const PPath &baseOutputName, const PVecSlide &vecSlides, const PVecXml &vecLayerXml, const PXml &lighRoot)
Save the slides.
void createVectorSlide(PVecLayer &vecLayerSlide, const PVecXml &vecLayer)
Create the vector of slide layer.
OptionParser createOptionParser()
Create the OptionParser of this program.
bool processFileSvg(const PPath &inputFile)
Process all the input files.
PString getSlideNumber(long unsigned int i)
Convert the slide index into string.
std::vector< long unsigned int > PSlide
Slide composed of layer.
Get the begin and end slide for current layer.
long unsigned int end
Last slide where the layer has to be printed.
long unsigned int begin
first slide where the layer has to be printed
PString command
Extra command.
Output mode of the html backend.
PMapSlide mapSlide
Map of the formula which are already saved as png files.