Skip to content
OE_document.cpp 2.63 KiB
Newer Older
3dsman's avatar
3dsman committed
/*
 * Copyright (c) 2015 Tricoire Sebastien 3dsman@free.fr
 *
 * This software is provided 'as-is', without any express or implied
 * warranty.  In no event will the authors be held liable for any damages
 * arising from the use of this software.
 *
 * Permission is granted to anyone to use this software for any purpose,
 * including commercial applications, and to alter it and redistribute it
 * freely, subject to the following restrictions:
 *
 * 1. The origin of this software must not be misrepresented; you must not
 * claim that you wrote the original software. If you use this software
 * in a product, an acknowledgment in the product documentation would be
 * appreciated but is not required.
 * 2. Altered source versions must be plainly marked as such, and must not be
 * misrepresented as being the original software.
 * 3. This notice may not be removed or altered from any source distribution.
 *
 */

#include "OE_document.h"

#include <string>
#include <iostream>
3dsman's avatar
3dsman committed
#include "OE_path.h"
3dsman's avatar
3dsman committed

OE_document::OE_document()
{
    //OE_document::OE_svg_base();
    //ctor
}

OE_document::OE_document(std::string filename)
{
    ParseFromFile(filename, "1", 1);
}

OE_document::~OE_document()
{
    /*OE_svg_base *snext;

	while (childs != NULL) {
		snext = childs->next;
		delete(childs);
		childs = snext;
	}*/
}


bool OE_document::ParseFromFile(const std::string filename, const char* units, float dpi)
{
    // Loading of the SVG file
    TiXmlDocument doc(filename.c_str());
    if ( ! doc.LoadFile() )
    {
        std::cerr << "error during loading of the following file :" << std::endl;
        std::cerr << "error #" << doc.ErrorId() << " : " << doc.ErrorDesc() << std::endl;

        return false;
    }
    TiXmlHandle hdl(&doc);

    TiXmlElement *object = hdl.FirstChildElement("svg").Element();
    Parse(object);
3dsman's avatar
3dsman committed
	
	OE_linestitch::initMotifs();

    OE_svg_base *child;
    child = childs;
	while (child != NULL) {
		    OE_curve *curve;
			curve = ((OE_path*) child)->curves;
			while (curve != 0) {
				
				//OE_linestitch* toto = new OE_linestitch(curve,0.1,1.8,0.5,1);
				OE_linestitch* toto = new OE_linestitch(curve,1,1);
				toto->setMotif(1);
				/*
				OE_linestitch* toto = new OE_linestitch(curve,4,4);
				toto->setMotif(4);*/
				//toto->setOffset(-0.5);
				toto->refresh();
				stitchs.push_back(toto);
				curve = curve->getNext();
			}
		child = child->next;
	}
3dsman's avatar
3dsman committed
    return true;
}
/*
bool OE_document::Parse(TiXmlElement *input)
{


return false;
}
3dsman's avatar
3dsman committed
*/
3dsman's avatar
3dsman committed
bool OE_document::draw(float dpi)
{

3dsman's avatar
3dsman committed
		 OE_svg_base::draw( dpi);
		// if (stitchs.size())
			 for (unsigned i=0; i<stitchs.size(); i++)
			 {
				 stitchs.at(i)->draw();
			 }
			 return true;
3dsman's avatar
3dsman committed
}
3dsman's avatar
3dsman committed

3dsman's avatar
3dsman committed