1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
/*
* Copyright (c) 2005 Cyrille Berger <cberger@cberger.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef KROSS_KRITACOREKRSLAYER_H
#define KROSS_KRITACOREKRSLAYER_H
#include <api/class.h>
#include <kis_types.h>
#include <kis_paint_layer.h>
class KisDoc;
class KisTransaction;
namespace Kross {
namespace ChalkCore {
/**
@author Cyrille Berger
*/
class PaintLayer : public Kross::Api::Class<PaintLayer>
{
public:
explicit PaintLayer(KisPaintLayerSP layer, KisDoc* doc = 0);
virtual ~PaintLayer();
virtual const TQString getClassName() const;
private:
/**
* Create an iterator over a layer, it will iterate on a rectangle area.
* This function takes four arguments :
* - x
* - y
* - width of the rectangle
* - height of the rectangle
*/
Kross::Api::Object::Ptr createRectIterator(Kross::Api::List::Ptr);
/**
* Create an iterator over a layer, it will iterate on a row.
* This function takes three arguments :
* - x start in the row
* - y vertical position of the row
* - width of the row
*/
Kross::Api::Object::Ptr createHLineIterator(Kross::Api::List::Ptr);
/**
* Create an iterator over a layer, it will iterate on a column.
* This function takes three arguments :
* - x horizontal position of the column
* - y start in the column
* - height of the column
*/
Kross::Api::Object::Ptr createVLineIterator(Kross::Api::List::Ptr);
/**
* Return the width of the layer
*/
Kross::Api::Object::Ptr getWidth(Kross::Api::List::Ptr);
/**
* Return the height of the layer
*/
Kross::Api::Object::Ptr getHeight(Kross::Api::List::Ptr);
/**
* This function creates an Histogram for this layer.
* It takes two arguments :
* - the type of the histogram ("RGB8HISTO")
* - 0 if the histogram is linear, or 1 if it is logarithmic
*/
Kross::Api::Object::Ptr createHistogram(Kross::Api::List::Ptr);
/**
* This function create a Painter which will allow you to some painting on the layer.
*/
Kross::Api::Object::Ptr createPainter(Kross::Api::List::Ptr);
/**
* Uses this function to create a new undo entry.
*/
Kross::Api::Object::Ptr beginPainting(Kross::Api::List::Ptr args);
/**
* Uses this function to close the current undo entry and add it to the history.
*/
Kross::Api::Object::Ptr endPainting(Kross::Api::List::Ptr args);
/**
* Convert the image to a colorspace.
* This function takes one argument :
* - the name of the destination colorspace
*
* For example (in Ruby) :
* @code
* image.convertToColorspace("CMYK")
* @endcode
*/
Kross::Api::Object::Ptr convertToColorspace(Kross::Api::List::Ptr args);
/**
* Return the id of the colorspace of this paint layer.
*/
Kross::Api::Object::Ptr colorSpaceId(Kross::Api::List::Ptr );
/**
* Return the fast wavelet transformed of the layer
*/
Kross::Api::Object::Ptr fastWaveletTransformation(Kross::Api::List::Ptr args);
/**
* Untransform a fast wavelet into this layer
* It takes one argument :
* - a wavelet object
*
* For example (in Ruby) :
* @code
* wavelet = layer.fastWaveletTransformation()
* layer.fastWaveletUntransformation(wavelet)
* @endcode
*/
Kross::Api::Object::Ptr fastWaveletUntransformation(Kross::Api::List::Ptr args);
public:
inline KisPaintLayerSP paintLayer() { return m_layer; }
inline KisDoc* doc() { return m_doc; }
private:
KisPaintLayerSP m_layer;
KisDoc* m_doc;
KisTransaction* m_cmd;
};
}
}
#endif
|