2 * Copyright 2006-2009, Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
6 * Stephan Aßmus <superstippi@gmx.de>
9 #include "SVGImporter.h"
20 #include "DocumentBuilder.h"
21 #include "SVGParser.h"
24 #undef B_TRANSLATION_CONTEXT
25 #define B_TRANSLATION_CONTEXT "Icon-O-Matic-SVGImport"
29 SVGImporter::SVGImporter()
34 SVGImporter::~SVGImporter()
40 SVGImporter::Import(Icon
* icon
, const entry_ref
* ref
)
42 status_t ret
= Init(icon
);
44 printf("SVGImporter::Import() - "
45 "Init() error: %s\n", strerror(ret
));
50 ret
= path
.InitCheck();
54 // peek into file to see if this could be an SVG file at all
55 BFile
file(path
.Path(), B_READ_ONLY
);
56 ret
= file
.InitCheck();
61 char buffer
[size
+ 1];
62 if (file
.Read(buffer
, size
) != size
)
67 if (strcasecmp(buffer
, "<?xml") != 0) {
68 // we might be stretching it a bit, but what the heck
73 agg::svg::DocumentBuilder builder
;
74 agg::svg::Parser
parser(builder
);
75 parser
.parse(path
.Path());
76 ret
= builder
.GetIcon(icon
, this, ref
->name
);
77 } catch(agg::svg::exception
& e
) {
79 sprintf(error
, B_TRANSLATE("Failed to open the file '%s' as "
80 "an SVG document.\n\n"
81 "Error: %s"), ref
->name
, e
.msg());
82 BAlert
* alert
= new BAlert(B_TRANSLATE("load error"),
83 error
, B_TRANSLATE("OK"), NULL
, NULL
,
84 B_WIDTH_AS_USUAL
, B_WARNING_ALERT
);
85 alert
->SetFlags(alert
->Flags() | B_CLOSE_ON_ESCAPE
);