Krita Source Code Documentation
Loading...
Searching...
No Matches
KisBufferStreamContigAbove32 Class Reference

#include <kis_buffer_stream.h>

+ Inheritance diagram for KisBufferStreamContigAbove32:

Public Member Functions

 KisBufferStreamContigAbove32 (uint8_t *src, uint16_t depth, tsize_t lineSize)
 
uint32_t nextValue () override
 
 ~KisBufferStreamContigAbove32 () override=default
 
- Public Member Functions inherited from KisBufferStreamContigBase
 KisBufferStreamContigBase (uint8_t *src, uint16_t depth, tsize_t lineSize)
 
void moveToLine (tsize_t lineNumber) override
 
void moveToPos (tsize_t x, tsize_t y) override
 
void restart () override
 
tsize_t width () const override
 
tsize_t x () const override
 
tsize_t y () const override
 
 ~KisBufferStreamContigBase () override=default
 
- Public Member Functions inherited from KisBufferStreamBase
 KisBufferStreamBase (uint16_t depth)
 
virtual ~KisBufferStreamBase ()=default
 

Additional Inherited Members

- Protected Attributes inherited from KisBufferStreamContigBase
tsize_t m_lineNumber = 0
 
tsize_t m_lineOffset = 0
 
const tsize_t m_lineSize
 
uint16_t m_posinc = 0
 
uint8_t *const m_src
 
uint8_t * m_srcIt
 
- Protected Attributes inherited from KisBufferStreamBase
uint16_t m_depth
 

Detailed Description

Definition at line 87 of file kis_buffer_stream.h.

Constructor & Destructor Documentation

◆ KisBufferStreamContigAbove32()

KisBufferStreamContigAbove32::KisBufferStreamContigAbove32 ( uint8_t * src,
uint16_t depth,
tsize_t lineSize )
inline

Definition at line 90 of file kis_buffer_stream.h.

91 : KisBufferStreamContigBase(src, depth, lineSize)
92 {
93 }
KisBufferStreamContigBase(uint8_t *src, uint16_t depth, tsize_t lineSize)

◆ ~KisBufferStreamContigAbove32()

KisBufferStreamContigAbove32::~KisBufferStreamContigAbove32 ( )
overridedefault

Member Function Documentation

◆ nextValue()

uint32_t KisBufferStreamContigAbove32::nextValue ( )
overridevirtual

Implements KisBufferStreamBase.

Definition at line 110 of file kis_buffer_stream.cc.

111{
112 uint16_t remain = m_depth;
113 uint32_t value = 0;
114 while (remain > 0) {
115 uint16_t toread = remain;
116 if (toread > m_posinc)
117 toread = m_posinc;
118 remain -= toread;
119 m_posinc = m_posinc - toread;
120 if (remain < 32U) {
121 value |= (((*m_srcIt >> m_posinc) & ((1U << toread) - 1U)) << (24U - remain));
122 }
123 if (m_posinc == 0) {
124 m_srcIt++;
125 m_lineOffset++; // we consumed a byte
126 m_posinc = 8U;
127 }
128 }
129 if (m_lineOffset >= m_lineSize) {
130 m_lineNumber += 1;
131 m_lineOffset = 0;
132 }
133 return value;
134}
float value(const T *src, size_t ch)

References KisBufferStreamBase::m_depth, KisBufferStreamContigBase::m_lineNumber, KisBufferStreamContigBase::m_lineOffset, KisBufferStreamContigBase::m_lineSize, KisBufferStreamContigBase::m_posinc, KisBufferStreamContigBase::m_srcIt, and value().


The documentation for this class was generated from the following files: