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 KritaCore {
/**
@author Cyrille Berger
*/
class PaintLayer : public Kross::Api::Class<PaintLayer>
{
public:
explicit PaintLayer(KisPaintLayerSP layer, KisDoc* doc = 0);
virtual ~PaintLayer();
virtual const QString 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
|