本文整理汇总了C++中KoColor::data方法的典型用法代码示例。如果您正苦于以下问题:C++ KoColor::data方法的具体用法?C++ KoColor::data怎么用?C++ KoColor::data使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KoColor
的用法示例。
在下文中一共展示了KoColor::data方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: saturationDepletion
void HairyBrush::saturationDepletion(Bristle * bristle, KoColor &bristleColor, qreal pressure, qreal inkDeplation)
{
qreal saturation;
if (m_properties->useWeights) {
// new weighted way (experiment)
saturation = (
(pressure * m_properties->pressureWeight) +
(bristle->length() * m_properties->bristleLengthWeight) +
(bristle->inkAmount() * m_properties->bristleInkAmountWeight) +
((1.0 - inkDeplation) * m_properties->inkDepletionWeight)) - 1.0;
}
else {
// old way of computing saturation
saturation = (
pressure *
bristle->length() *
bristle->inkAmount() *
(1.0 - inkDeplation)) - 1.0;
}
m_transfo->setParameter(m_transfo->parameterId("h"), 0.0);
m_transfo->setParameter(m_transfo->parameterId("v"), 0.0);
m_transfo->setParameter(m_saturationId, saturation);
m_transfo->setParameter(3, 1);//sets the type to
m_transfo->setParameter(4, false);//sets the colorize to none.
m_transfo->transform(bristleColor.data(), bristleColor.data() , 1);
}
示例2: darkenPixel
inline void HairyBrush::darkenPixel(int wx, int wy, const KoColor &color)
{
m_dabAccessor->moveTo(wx, wy);
if (m_dab->colorSpace()->opacityU8(m_dabAccessor->rawData()) < color.opacityU8()) {
memcpy(m_dabAccessor->rawData(), color.data(), m_pixelSize);
}
}
示例3: paintParticle
void HairyBrush::paintParticle(QPointF pos, const KoColor& color)
{
// opacity top left, right, bottom left, right
memcpy(m_color.data(), color.data(), m_pixelSize);
quint8 opacity = color.opacityU8();
int ipx = int (pos.x());
int ipy = int (pos.y());
qreal fx = pos.x() - ipx;
qreal fy = pos.y() - ipy;
quint8 btl = qRound((1.0 - fx) * (1.0 - fy) * opacity);
quint8 btr = qRound((fx) * (1.0 - fy) * opacity);
quint8 bbl = qRound((1.0 - fx) * (fy) * opacity);
quint8 bbr = qRound((fx) * (fy) * opacity);
m_color.setOpacity(btl);
plotPixel(ipx , ipy, m_color);
m_color.setOpacity(btr);
plotPixel(ipx + 1 , ipy, m_color);
m_color.setOpacity(bbl);
plotPixel(ipx , ipy + 1, m_color);
m_color.setOpacity(bbr);
plotPixel(ipx + 1 , ipy + 1, m_color);
}
示例4: getImageMap
QImage KisVisualColorSelectorShape::getImageMap()
{
//qDebug() << this << ">>>>>>>>> getImageMap()" << m_d->imagesNeedUpdate;
if (m_d->imagesNeedUpdate == true) {
m_d->gradient = QImage(width(), height(), QImage::Format_ARGB32);
m_d->gradient.fill(Qt::transparent);
// KoColor c = m_d->currentColor;
// Fill a buffer with the right kocolors
quint8 *data = new quint8[width() * height() * height()];
quint8 *dataPtr = data;
for (int y = 0; y < m_d->gradient.height(); y++) {
for (int x=0; x < m_d->gradient.width(); x++) {
QPointF newcoordinate = convertWidgetCoordinateToShapeCoordinate(QPoint(x, y));
KoColor c = convertShapeCoordinateToKoColor(newcoordinate);
memcpy(dataPtr, c.data(), m_d->currentColor.colorSpace()->pixelSize());
dataPtr += m_d->currentColor.colorSpace()->pixelSize();
}
}
// Convert the buffer to a qimage
if (m_d->displayRenderer) {
m_d->gradient = m_d->displayRenderer->convertToQImage(m_d->currentColor.colorSpace(), data, width(), height());
}
else {
m_d->gradient = m_d->currentColor.colorSpace()->convertToQImage(data, width(), height(), 0, KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::internalConversionFlags());
}
delete[] data;
m_d->imagesNeedUpdate = false;
}
return m_d->gradient;
}
示例5: putPixel
void CurveBrush::putPixel(QPointF pos, KoColor &color)
{
int ipx = int (pos.x());
int ipy = int (pos.y());
qreal fx = pos.x() - ipx;
qreal fy = pos.y() - ipy;
qreal btl = (1 - fx) * (1 - fy);
qreal btr = (fx) * (1 - fy);
qreal bbl = (1 - fx) * (fy);
qreal bbr = (fx) * (fy);
color.setOpacity(btl);
m_writeAccessor->moveTo(ipx , ipy);
if (cs->opacityU8(m_writeAccessor->rawData()) < color.opacityU8()) {
memcpy(m_writeAccessor->rawData(), color.data(), m_pixelSize);
}
color.setOpacity(btr);
m_writeAccessor->moveTo(ipx + 1, ipy);
if (cs->opacityU8(m_writeAccessor->rawData()) < color.opacityU8()) {
memcpy(m_writeAccessor->rawData(), color.data(), m_pixelSize);
}
color.setOpacity(bbl);
m_writeAccessor->moveTo(ipx, ipy + 1);
if (cs->opacityU8(m_writeAccessor->rawData()) < color.opacityU8()) {
memcpy(m_writeAccessor->rawData(), color.data(), m_pixelSize);
}
color.setOpacity(bbr);
m_writeAccessor->moveTo(ipx + 1, ipy + 1);
if (cs->opacityU8(m_writeAccessor->rawData()) < color.opacityU8()) {
memcpy(m_writeAccessor->rawData(), color.data(), m_pixelSize);
}
}
示例6: mouseMoveEvent
void KisVisualColorSelectorShape::mouseMoveEvent(QMouseEvent *e)
{
if (m_d->mousePressActive==true && this->mask().contains(e->pos())) {
QPointF coordinates = convertWidgetCoordinateToShapeCoordinate(e->pos());
quint8* oldData = m_d->currentColor.data();
KoColor col = convertShapeCoordinateToKoColor(coordinates, true);
QRect offsetrect(this->geometry().topLeft()+QPoint(7.0,7.0), this->geometry().bottomRight()-QPoint(7.0,7.0));
if (offsetrect.contains(e->pos()) || (m_d->colorSpace->difference(col.data(), oldData)>5)) {
setColor(col);
if (!m_d->updateTimer->isActive()) {
Q_EMIT sigNewColor(col);
m_d->updateTimer->start();
}
}
} else {
e->ignore();
}
}
示例7: convertKoColorToShapeCoordinate
QPointF KisVisualColorSelectorShape::convertKoColorToShapeCoordinate(KoColor c)
{
////qDebug() << this << ">>>>>>>>> convertKoColorToShapeCoordinate()";
if (c.colorSpace() != m_d->colorSpace) {
c.convertTo(m_d->colorSpace);
}
QVector <float> channelValues (m_d->currentColor.colorSpace()->channelCount());
channelValues.fill(1.0);
m_d->colorSpace->normalisedChannelsValue(c.data(), channelValues);
QVector <float> channelValuesDisplay = channelValues;
QVector <qreal> maxvalue(c.colorSpace()->channelCount());
maxvalue.fill(1.0);
if (m_d->displayRenderer
&& (m_d->colorSpace->colorDepthId() == Float16BitsColorDepthID
|| m_d->colorSpace->colorDepthId() == Float32BitsColorDepthID
|| m_d->colorSpace->colorDepthId() == Float64BitsColorDepthID)
&& m_d->colorSpace->colorModelId() != LABAColorModelID
&& m_d->colorSpace->colorModelId() != CMYKAColorModelID) {
for (int ch = 0; ch<maxvalue.size(); ch++) {
KoChannelInfo *channel = m_d->colorSpace->channels()[ch];
maxvalue[ch] = m_d->displayRenderer->maxVisibleFloatValue(channel);
channelValues[ch] = channelValues[ch]/(maxvalue[ch]);
channelValuesDisplay[KoChannelInfo::displayPositionToChannelIndex(ch, m_d->colorSpace->channels())] = channelValues[ch];
}
} else {
for (int i =0; i<channelValues.size();i++) {
channelValuesDisplay[KoChannelInfo::displayPositionToChannelIndex(i, m_d->colorSpace->channels())] = qBound((float)0.0,channelValues[i], (float)1.0);
}
}
QPointF coordinates(0.0,0.0);
qreal huedivider = 1.0;
qreal huedivider2 = 1.0;
if (m_d->channel1==0) {
huedivider = 360.0;
}
if (m_d->channel2==0) {
huedivider2 = 360.0;
}
if (m_d->model != ColorModel::Channel && c.colorSpace()->colorModelId().id() == "RGBA") {
if (c.colorSpace()->colorModelId().id() == "RGBA") {
if (m_d->model == ColorModel::HSV){
QVector <float> inbetween(3);
RGBToHSV(channelValuesDisplay[0],channelValuesDisplay[1], channelValuesDisplay[2], &inbetween[0], &inbetween[1], &inbetween[2]);
inbetween = convertvectorqrealTofloat(getHSX(convertvectorfloatToqreal(inbetween)));
coordinates.setX(inbetween[m_d->channel1]/huedivider);
if (m_d->dimension == Dimensions::twodimensional) {
coordinates.setY(inbetween[m_d->channel2]/huedivider2);
}
} else if (m_d->model == ColorModel::HSL) {
QVector <float> inbetween(3);
RGBToHSL(channelValuesDisplay[0],channelValuesDisplay[1], channelValuesDisplay[2], &inbetween[0], &inbetween[1], &inbetween[2]);
inbetween = convertvectorqrealTofloat(getHSX(convertvectorfloatToqreal(inbetween)));
coordinates.setX(inbetween[m_d->channel1]/huedivider);
if (m_d->dimension == Dimensions::twodimensional) {
coordinates.setY(inbetween[m_d->channel2]/huedivider2);
}
} else if (m_d->model == ColorModel::HSI) {
QVector <qreal> chan2 = convertvectorfloatToqreal(channelValuesDisplay);
QVector <qreal> inbetween(3);
RGBToHSI(channelValuesDisplay[0],channelValuesDisplay[1], channelValuesDisplay[2], &inbetween[0], &inbetween[1], &inbetween[2]);
inbetween = getHSX(inbetween);
coordinates.setX(inbetween[m_d->channel1]);
if (m_d->dimension == Dimensions::twodimensional) {
coordinates.setY(inbetween[m_d->channel2]);
}
} else if (m_d->model == ColorModel::HSY) {
QVector <qreal> luma = m_d->colorSpace->lumaCoefficients();
QVector <qreal> chan2 = convertvectorfloatToqreal(channelValuesDisplay);
QVector <qreal> inbetween(3);
RGBToHSY(channelValuesDisplay[0],channelValuesDisplay[1], channelValuesDisplay[2], &inbetween[0], &inbetween[1], &inbetween[2], luma[0], luma[1], luma[2]);
inbetween = getHSX(inbetween);
coordinates.setX(inbetween[m_d->channel1]);
if (m_d->dimension == Dimensions::twodimensional) {
coordinates.setY(inbetween[m_d->channel2]);
}
}
}
} else {
coordinates.setX(qBound((float)0.0, channelValuesDisplay[m_d->channel1], (float)1.0));
if (m_d->dimension == Dimensions::twodimensional) {
coordinates.setY(qBound((float)0.0, channelValuesDisplay[m_d->channel2], (float)1.0));
}
}
return coordinates;
}
示例8: convertShapeCoordinateToKoColor
KoColor KisVisualColorSelectorShape::convertShapeCoordinateToKoColor(QPointF coordinates, bool cursor)
{
//qDebug() << this << ">>>>>>>>> convertShapeCoordinateToKoColor()" << coordinates;
KoColor c = m_d->currentColor;
QVector <float> channelValues (c.colorSpace()->channelCount());
channelValues.fill(1.0);
c.colorSpace()->normalisedChannelsValue(c.data(), channelValues);
QVector <float> channelValuesDisplay = channelValues;
QVector <qreal> maxvalue(c.colorSpace()->channelCount());
maxvalue.fill(1.0);
if (m_d->displayRenderer
&& (m_d->colorSpace->colorDepthId() == Float16BitsColorDepthID
|| m_d->colorSpace->colorDepthId() == Float32BitsColorDepthID
|| m_d->colorSpace->colorDepthId() == Float64BitsColorDepthID)
&& m_d->colorSpace->colorModelId() != LABAColorModelID
&& m_d->colorSpace->colorModelId() != CMYKAColorModelID) {
for (int ch = 0; ch < maxvalue.size(); ch++) {
KoChannelInfo *channel = m_d->colorSpace->channels()[ch];
maxvalue[ch] = m_d->displayRenderer->maxVisibleFloatValue(channel);
channelValues[ch] = channelValues[ch]/(maxvalue[ch]);
channelValuesDisplay[KoChannelInfo::displayPositionToChannelIndex(ch, m_d->colorSpace->channels())] = channelValues[ch];
}
}
else {
for (int i =0; i < channelValues.size();i++) {
channelValuesDisplay[KoChannelInfo::displayPositionToChannelIndex(i, m_d->colorSpace->channels())] = qBound((float)0.0,channelValues[i], (float)1.0);
}
}
qreal huedivider = 1.0;
qreal huedivider2 = 1.0;
if (m_d->channel1 == 0) {
huedivider = 360.0;
}
if (m_d->channel2 == 0) {
huedivider2 = 360.0;
}
if (m_d->model != ColorModel::Channel && c.colorSpace()->colorModelId().id() == "RGBA") {
if (m_d->model == ColorModel::HSV) {
/*
* RGBToHSV has a undefined hue possibility. This means that hue will be -1.
* This can be annoying for dealing with a selector, but I understand it is being
* used for the KoColorSelector... For now implement a qMax here.
*/
QVector <float> inbetween(3);
RGBToHSV(channelValuesDisplay[0],channelValuesDisplay[1], channelValuesDisplay[2], &inbetween[0], &inbetween[1], &inbetween[2]);
inbetween = convertvectorqrealTofloat(getHSX(convertvectorfloatToqreal(inbetween)));
inbetween[m_d->channel1] = coordinates.x()*huedivider;
if (m_d->dimension == Dimensions::twodimensional) {
inbetween[m_d->channel2] = coordinates.y()*huedivider2;
}
if (cursor) {
setHSX(convertvectorfloatToqreal(inbetween));
Q_EMIT sigHSXchange();
}
HSVToRGB(qMax(inbetween[0],(float)0.0), inbetween[1], inbetween[2], &channelValuesDisplay[0], &channelValuesDisplay[1], &channelValuesDisplay[2]);
}
else if (m_d->model == ColorModel::HSL) {
/*
* HSLToRGB can give negative values on the grey. I fixed the fromNormalisedChannel function to clamp,
* but you might want to manually clamp for floating point values.
*/
QVector <float> inbetween(3);
RGBToHSL(channelValuesDisplay[0],channelValuesDisplay[1], channelValuesDisplay[2], &inbetween[0], &inbetween[1], &inbetween[2]);
inbetween = convertvectorqrealTofloat(getHSX(convertvectorfloatToqreal(inbetween)));
inbetween[m_d->channel1] = fmod(coordinates.x()*huedivider, 360.0);
if (m_d->dimension == Dimensions::twodimensional) {
inbetween[m_d->channel2] = coordinates.y()*huedivider2;
}
if (cursor) {
setHSX(convertvectorfloatToqreal(inbetween));
Q_EMIT sigHSXchange();
}
HSLToRGB(qMax(inbetween[0], (float)0.0), inbetween[1], inbetween[2], &channelValuesDisplay[0], &channelValuesDisplay[1], &channelValuesDisplay[2]);
}
else if (m_d->model == ColorModel::HSI) {
/*
* HSI is a modified HSY function.
*/
QVector <qreal> chan2 = convertvectorfloatToqreal(channelValuesDisplay);
QVector <qreal> inbetween(3);
RGBToHSI(chan2[0],chan2[1], chan2[2], &inbetween[0], &inbetween[1], &inbetween[2]);
inbetween = getHSX(inbetween);
inbetween[m_d->channel1] = coordinates.x();
if (m_d->dimension == Dimensions::twodimensional) {
inbetween[m_d->channel2] = coordinates.y();
}
if (cursor) {
setHSX(inbetween);
Q_EMIT sigHSXchange();
}
HSIToRGB(inbetween[0], inbetween[1], inbetween[2],&chan2[0],&chan2[1], &chan2[2]);
channelValuesDisplay = convertvectorqrealTofloat(chan2);
//.........这里部分代码省略.........
示例9: apply
void KisSmudgeRadiusOption::apply(KisPainter& painter, const KisPaintInformation& info, qreal scale, qreal posx, qreal posy,KisPaintDeviceSP dev) const
{
double sliderValue = computeValue(info);
int smudgeRadius = ((sliderValue * scale)*0.5)/100.0;//scale is diameter?
KoColor color = painter.paintColor();
if (smudgeRadius == 1) {
dev->pixel(posx, posy, &color);
painter.setPaintColor(color);
} else {
const KoColorSpace* cs = dev->colorSpace();
int pixelSize = cs->pixelSize();
quint8* data = new quint8[pixelSize];
static quint8** pixels = new quint8*[2];
qint16* weights = new qint16[2];
pixels[1] = new quint8[pixelSize];
pixels[0] = new quint8[pixelSize];
int loop_increment = 1;
if(smudgeRadius >= 8)
{
loop_increment = (2*smudgeRadius)/16;
}
int i = 0;
int k = 0;
int j = 0;
KisRandomConstAccessorSP accessor = dev->createRandomConstAccessorNG(0, 0);
KisCrossDeviceColorPickerInt colorPicker(painter.device(), color);
colorPicker.pickColor(posx, posy, color.data());
for (int y = 0; y <= smudgeRadius; y = y + loop_increment) {
for (int x = 0; x <= smudgeRadius; x = x + loop_increment) {
for(j = 0;j < 2;j++)
{
if(j == 1)
{
y = y*(-1);
}
for(k = 0;k < 2;k++)
{
if(k == 1)
{
x = x*(-1);
}
accessor->moveTo(posx + x, posy + y);
memcpy(pixels[1], accessor->rawDataConst(), pixelSize);
if(i == 0)
{
memcpy(pixels[0],accessor->rawDataConst(),pixelSize);
}
if (x == 0 && y == 0) {
// Because the sum of the weights must be 255,
// we cheat a bit, and weigh the center pixel differently in order
// to sum to 255 in total
// It's -(counts -1), because we'll add the center one implicitly
// through that calculation
weights[1] = (255 - ((i + 1) * (255 /(i+2) )) );
} else {
weights[1] = 255 /(i+2);
}
i++;
if (i>smudgeRadius){i=0;}
weights[0] = 255 - weights[1];
const quint8** cpixels = const_cast<const quint8**>(pixels);
cs->mixColorsOp()->mixColors(cpixels, weights,2, data);
memcpy(pixels[0],data,pixelSize);
}
x = x*(-1);
}
y = y*(-1);
}
}
KoColor color = KoColor(pixels[0],cs);
painter.setPaintColor(color);
for (int l = 0; l < 2; l++){
delete[] pixels[l];
}
// delete[] pixels;
delete[] data;
}
}
示例10: plotPixel
inline void HairyBrush::plotPixel(int wx, int wy, const KoColor &color)
{
m_dabAccessor->moveTo(wx, wy);
m_compositeOp->composite(m_dabAccessor->rawData(), m_pixelSize, color.data() , m_pixelSize, 0, 0, 1, 1, OPACITY_OPAQUE_U8);
}
示例11: drawContents
void KoColorSlider::drawContents( QPainter *painter )
{
QPixmap checker(8, 8);
QPainter p(&checker);
p.fillRect(0, 0, 4, 4, Qt::lightGray);
p.fillRect(4, 0, 4, 4, Qt::darkGray);
p.fillRect(0, 4, 4, 4, Qt::darkGray);
p.fillRect(4, 4, 4, 4, Qt::lightGray);
p.end();
QRect contentsRect_(contentsRect());
painter->fillRect(contentsRect_, QBrush(checker));
if( !d->upToDate || d->pixmap.isNull() || d->pixmap.width() != contentsRect_.width()
|| d->pixmap.height() != contentsRect_.height() )
{
KoColor c = d->minColor; // smart way to fetch colorspace
QColor color;
const quint8 *colors[2];
colors[0] = d->minColor.data();
colors[1] = d->maxColor.data();
KoMixColorsOp * mixOp = c.colorSpace()->mixColorsOp();
QImage image(contentsRect_.width(), contentsRect_.height(), QImage::Format_ARGB32 );
if( orientation() == Qt::Horizontal ) {
for (int x = 0; x < contentsRect_.width(); x++) {
qreal t = static_cast<qreal>(x) / (contentsRect_.width() - 1);
qint16 colorWeights[2];
colorWeights[0] = static_cast<quint8>((1.0 - t) * 255 + 0.5);
colorWeights[1] = 255 - colorWeights[0];
mixOp->mixColors(colors, colorWeights, 2, c.data());
c.toQColor(&color);
for (int y = 0; y < contentsRect_.height(); y++)
image.setPixel(x, y, color.rgba());
}
}
else {
for (int y = 0; y < contentsRect_.height(); y++) {
qreal t = static_cast<qreal>(y) / (contentsRect_.height() - 1);
qint16 colorWeights[2];
colorWeights[0] = static_cast<quint8>((t) * 255 + 0.5);
colorWeights[1] = 255 - colorWeights[0];
mixOp->mixColors(colors, colorWeights, 2, c.data());
c.toQColor(&color);
for (int x = 0; x < contentsRect_.width(); x++)
image.setPixel(x, y, color.rgba());
}
}
d->pixmap = QPixmap::fromImage(image);
d->upToDate = true;
}
painter->drawPixmap( contentsRect_, d->pixmap, QRect( 0, 0, d->pixmap.width(), d->pixmap.height()) );
}
示例12: cutOneWay
void cutOneWay(const KoColor &color,
KisPaintDeviceSP src,
KisPaintDeviceSP colorScribble,
KisPaintDeviceSP backgroundScribble,
KisPaintDeviceSP resultDevice,
KisPaintDeviceSP maskDevice,
const QRect &boundingRect)
{
using namespace boost;
KIS_ASSERT_RECOVER_RETURN(src->pixelSize() == 1);
KIS_ASSERT_RECOVER_RETURN(colorScribble->pixelSize() == 1);
KIS_ASSERT_RECOVER_RETURN(backgroundScribble->pixelSize() == 1);
KIS_ASSERT_RECOVER_RETURN(maskDevice->pixelSize() == 1);
KIS_ASSERT_RECOVER_RETURN(*resultDevice->colorSpace() == *color.colorSpace());
KisLazyFillCapacityMap capacityMap(src, colorScribble, backgroundScribble, maskDevice, boundingRect);
KisLazyFillGraph &graph = capacityMap.graph();
std::vector<default_color_type> groups(num_vertices(graph));
std::vector<int> residual_capacity(num_edges(graph), 0);
std::vector<typename graph_traits<KisLazyFillGraph>::vertices_size_type> distance_vec(num_vertices(graph), 0);
std::vector<typename graph_traits<KisLazyFillGraph>::edge_descriptor> predecessor_vec(num_vertices(graph));
auto vertexIndexMap = get(boost::vertex_index, graph);
typedef KisLazyFillGraph::vertex_descriptor Vertex;
Vertex s(Vertex::LABEL_A);
Vertex t(Vertex::LABEL_B);
float maxFlow =
boykov_kolmogorov_max_flow(graph,
capacityMap,
make_iterator_property_map(&residual_capacity[0], get(boost::edge_index, graph)),
get(boost::edge_reverse, graph),
make_iterator_property_map(&predecessor_vec[0], vertexIndexMap),
make_iterator_property_map(&groups[0], vertexIndexMap),
make_iterator_property_map(&distance_vec[0], vertexIndexMap),
vertexIndexMap,
s,
t);
Q_UNUSED(maxFlow);
KisSequentialIterator dstIt(resultDevice, graph.rect());
KisSequentialIterator mskIt(maskDevice, graph.rect());
const int pixelSize = resultDevice->pixelSize();
do {
KisLazyFillGraph::vertex_descriptor v(dstIt.x(), dstIt.y());
long vertex_idx = get(boost::vertex_index, graph, v);
default_color_type label = groups[vertex_idx];
if (label == black_color) {
memcpy(dstIt.rawData(), color.data(), pixelSize);
*mskIt.rawData() = 10 + (int(label) << 4);
}
} while (dstIt.nextPixel() && mskIt.nextPixel());
}
示例13: updateValues
void KoUniColorChooser::updateValues()
{
KoColor tmpColor;
m_HIn->blockSignals(true);
m_SIn->blockSignals(true);
m_VIn->blockSignals(true);
m_RIn->blockSignals(true);
m_GIn->blockSignals(true);
m_BIn->blockSignals(true);
if (cmykColorSpace()) {
m_CIn->blockSignals(true);
m_MIn->blockSignals(true);
m_YIn->blockSignals(true);
m_KIn->blockSignals(true);
}
m_LIn->blockSignals(true);
m_aIn->blockSignals(true);
m_bIn->blockSignals(true);
/*
KoOldColor color = m_fgColor;
int h = color.H();
int s = color.S();
int v = color.V();
m_HIn->setValue(h);
m_SIn->setValue(s);
m_VIn->setValue(v);
*/
tmpColor = m_currentColor;
tmpColor.convertTo(rgbColorSpace());
m_RIn->setValue(tmpColor.data()[2]);
m_GIn->setValue(tmpColor.data()[1]);
m_BIn->setValue(tmpColor.data()[0]);
if(m_showOpacitySlider)
{
m_opacitySlider->blockSignals(true);
m_opacityIn->blockSignals(true);
KoColor minColor = tmpColor;
tmpColor.colorSpace()->setOpacity(minColor.data(), OPACITY_TRANSPARENT_U8, 1);
KoColor maxColor = tmpColor;
tmpColor.colorSpace()->setOpacity(maxColor.data(), OPACITY_OPAQUE_U8, 1);
m_opacitySlider->setColors(minColor, maxColor);
m_opacitySlider->setValue(tmpColor.opacityF() * 100 );
m_opacityIn->setValue(tmpColor.opacityF() * 100 );
m_opacityIn->blockSignals(false);
m_opacitySlider->blockSignals(false);
}
tmpColor = m_currentColor;
tmpColor.convertTo(labColorSpace());
m_LIn->setValue(((quint16 *)tmpColor.data())[0]/(256*256/100));
m_aIn->setValue(((quint16 *)tmpColor.data())[1]/256);
m_bIn->setValue(((quint16 *)tmpColor.data())[2]/256);
if ( cmykColorSpace() ) {
tmpColor = m_currentColor;
tmpColor.convertTo(cmykColorSpace());
m_CIn->setValue((tmpColor.data()[0]*100)/255);
m_MIn->setValue((tmpColor.data()[1]*100/255));
m_YIn->setValue((tmpColor.data()[2]*100)/255);
m_KIn->setValue((tmpColor.data()[3]*100)/255);
}
m_HIn->blockSignals(false);
m_SIn->blockSignals(false);
m_VIn->blockSignals(false);
m_RIn->blockSignals(false);
m_GIn->blockSignals(false);
m_BIn->blockSignals(false);
if (cmykColorSpace()) {
m_CIn->blockSignals(false);
m_MIn->blockSignals(false);
m_YIn->blockSignals(false);
m_KIn->blockSignals(false);
}
m_LIn->blockSignals(false);
m_aIn->blockSignals(false);
m_bIn->blockSignals(false);
}