Krita Source Code Documentation
Loading...
Searching...
No Matches
gimp_bump_map.h File Reference
#include <QtGlobal>
#include "kis_types.h"

Go to the source code of this file.

Classes

struct  bumpmap_vals_t
 

Enumerations

enum  BumpmapType { LINEAR = 0 , SPHERICAL , SINUSOIDAL }
 

Functions

void KRITAIMAGE_EXPORT bumpmap (KisPixelSelectionSP device, const QRect &selectionRect, const bumpmap_vals_t &bmvals)
 

Enumeration Type Documentation

◆ BumpmapType

Enumerator
LINEAR 
SPHERICAL 
SINUSOIDAL 

Definition at line 21 of file gimp_bump_map.h.

22{
23 LINEAR = 0,
26};
@ SINUSOIDAL
@ LINEAR
@ SPHERICAL

Function Documentation

◆ bumpmap()

void KRITAIMAGE_EXPORT bumpmap ( KisPixelSelectionSP device,
const QRect & selectionRect,
const bumpmap_vals_t & bmvals )

Definition at line 62 of file gimp_bump_map.cpp.

65{
68
69 bumpmap_params_t params;
70 bumpmap_init_params (&params, bmvals);
71
72 const QRect dataRect = kisGrowRect(selectionRect, 1);
73
74 const int dataRowSize = dataRect.width() * sizeof(quint8);
75 const int selectionRowSize = selectionRect.width() * sizeof(quint8);
76 QScopedArrayPointer<quint8> dstRow(new quint8[selectionRowSize]);
77
78 QScopedArrayPointer<quint8> bmRow1(new quint8[dataRowSize]);
79 QScopedArrayPointer<quint8> bmRow2(new quint8[dataRowSize]);
80 QScopedArrayPointer<quint8> bmRow3(new quint8[dataRowSize]);
81
82 device->readBytes(bmRow1.data(), dataRect.left(), dataRect.top(), dataRect.width(), 1);
83 device->readBytes(bmRow2.data(), dataRect.left(), dataRect.top() + 1, dataRect.width(), 1);
84 device->readBytes(bmRow3.data(), dataRect.left(), dataRect.top() + 2, dataRect.width(), 1);
85
86 convertRow(bmRow1.data(), dataRect.width(), params.lut);
87 convertRow(bmRow2.data(), dataRect.width(), params.lut);
88 convertRow(bmRow3.data(), dataRect.width(), params.lut);
89
90 for (int row = selectionRect.top();
91 row < selectionRect.top() + selectionRect.height(); row++) {
92
93 bumpmap_row (bmvals, dstRow.data(), selectionRect.width(),
94 bmRow1.data() + 1, bmRow2.data() + 1, bmRow3.data() + 1,
95 &params);
96
97 device->writeBytes(dstRow.data(), selectionRect.left(), row, selectionRect.width(), 1);
98
99 bmRow1.swap(bmRow2);
100 bmRow2.swap(bmRow3);
101
102 device->readBytes(bmRow3.data(), dataRect.left(), row + 1, dataRect.width(), 1);
103 convertRow(bmRow3.data(), dataRect.width(), params.lut);
104 }
105}
void readBytes(quint8 *data, qint32 x, qint32 y, qint32 w, qint32 h) const
void writeBytes(const quint8 *data, qint32 x, qint32 y, qint32 w, qint32 h)
void bumpmap_init_params(bumpmap_params_t *params, const bumpmap_vals_t &bmvals)
void bumpmap_row(const bumpmap_vals_t &bmvals, guchar *dest, gint width, const guchar *bm_row1, const guchar *bm_row2, const guchar *bm_row3, bumpmap_params_t *params)
void convertRow(quint8 *data, int width, const quint8 *lut)
#define KIS_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:75
T kisGrowRect(const T &rect, U offset)
Definition kis_global.h:186

References bumpmap_init_params(), bumpmap_row(), convertRow(), KIS_ASSERT_RECOVER_RETURN, kisGrowRect(), bumpmap_params_t::lut, KisPaintDevice::readBytes(), KisPaintDevice::writeBytes(), bumpmap_vals_t::xofs, and bumpmap_vals_t::yofs.