1/*
2 * Copyright 2006-2007, Haiku.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Stephan A��mus <superstippi@gmx.de>
7 */
8
9#include "TransformerFactory.h"
10
11#include "AffineTransformer.h"
12#include "ContourTransformer.h"
13#include "PerspectiveTransformer.h"
14#include "Shape.h"
15#include "StrokeTransformer.h"
16
17#ifdef ICON_O_MATIC
18#include <Catalog.h>
19#include <Message.h>
20#endif
21
22
23_USING_ICON_NAMESPACE
24
25
26// TransformerFor
27Transformer*
28TransformerFactory::TransformerFor(uint32 type, VertexSource& source, Shape* shape)
29{
30	switch (type) {
31		case AFFINE_TRANSFORMER:
32			return new AffineTransformer(source);
33		case PERSPECTIVE_TRANSFORMER:
34			return new PerspectiveTransformer(source, shape);
35		case CONTOUR_TRANSFORMER:
36			return new ContourTransformer(source);
37		case STROKE_TRANSFORMER:
38			return new StrokeTransformer(source);
39	}
40
41	return NULL;
42}
43
44// TransformerFor
45Transformer*
46TransformerFactory::TransformerFor(BMessage* message, VertexSource& source, Shape* shape)
47{
48	switch (message->what) {
49		case AffineTransformer::archive_code:
50			return new AffineTransformer(source, message);
51		case PerspectiveTransformer::archive_code:
52			return new PerspectiveTransformer(source, shape, message);
53		case ContourTransformer::archive_code:
54			return new ContourTransformer(source, message);
55		case StrokeTransformer::archive_code:
56			return new StrokeTransformer(source, message);
57	}
58
59	return NULL;
60}
61
62