From 698569f8428ca088f764d704034a1330517b98c0 Mon Sep 17 00:00:00 2001 From: tpearson Date: Sun, 26 Jun 2011 00:41:16 +0000 Subject: Finish rebranding of Krita as Chalk git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1238363 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- chalk/doc/colorstrategyAPI | 58 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 chalk/doc/colorstrategyAPI (limited to 'chalk/doc/colorstrategyAPI') diff --git a/chalk/doc/colorstrategyAPI b/chalk/doc/colorstrategyAPI new file mode 100644 index 000000000..07c95ae9e --- /dev/null +++ b/chalk/doc/colorstrategyAPI @@ -0,0 +1,58 @@ +This is a working document. It list the places where pixels are mangled and requested functions to do it in an colorstrategy independent way + +The purpose is to find out which functions an API in colorstrategy must have to support pixelmangling in a colorstretegy independent manner. + + +Requested function: apply an alpha tqmask to pixels +Problem: alpha is hard-coded 8-bit in KisPixel, when it should be free + +void KisPaintDevice::clearSelection() +{ + if (!hasSelection()) return; + + QRect r = m_selection -> selectedRect(); + r = r.normalize(); + + for (Q_INT32 y = 0; y < r.height(); y++) { + KisHLineIterator devIt = createHLineIterator(r.x(), r.y() + y, r.width(), true); + KisHLineIterator selectionIt = m_selection -> createHLineIterator(r.x(), r.y() + y, r.width(), false); + + while (!devIt.isDone()) { + KisPixel p = toPixel(devIt.rawData()); + KisPixel s = m_selection -> toPixel(selectionIt.rawData()); + // XXX: Why Q_UIN16 here? Doesn't that clash with UINT8_MULT later on? + Q_UINT16 p_alpha, s_alpha; + p_alpha = p.alpha(); + s_alpha = MAX_SELECTED - s.alpha(); + + p.alpha() = UINT8_MULT(p_alpha, s_alpha); + + ++devIt; + ++selectionIt; + } + } +} + +void KisPaintDevice::applySelectionMask(KisSelectionSP tqmask) +{ + QRect r = tqmask -> extent(); + crop(r); + + for (Q_INT32 y = r.top(); y <= r.bottom(); ++y) { + + KisHLineIterator pixelIt = createHLineIterator(r.x(), y, r.width(), true); + KisHLineIterator tqmaskIt = tqmask -> createHLineIterator(r.x(), y, r.width(), false); + + while (!pixelIt.isDone()) { + + KisPixel pixel = toPixel(pixelIt.rawData()); + KisPixel tqmaskValue = tqmask -> toPixel(tqmaskIt.rawData()); + + pixel.alpha() = (pixel.alpha() * tqmaskValue.alpha()) / MAX_SELECTED; + + ++pixelIt; + ++tqmaskIt; + } + } +} + -- cgit v1.2.3