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

#include <kis_buffer_stream.h>

+ Inheritance diagram for KisBufferStreamContigBelow32:

Public Member Functions

 KisBufferStreamContigBelow32 (uint8_t *src, uint16_t depth, tsize_t lineSize)
 
uint32_t nextValue () override
 
 ~KisBufferStreamContigBelow32 () 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 74 of file kis_buffer_stream.h.

Constructor & Destructor Documentation

◆ KisBufferStreamContigBelow32()

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

Definition at line 77 of file kis_buffer_stream.h.

78 : KisBufferStreamContigBase(src, depth, lineSize)
79 {
80 }
KisBufferStreamContigBase(uint8_t *src, uint16_t depth, tsize_t lineSize)

◆ ~KisBufferStreamContigBelow32()

KisBufferStreamContigBelow32::~KisBufferStreamContigBelow32 ( )
overridedefault

Member Function Documentation

◆ nextValue()

uint32_t KisBufferStreamContigBelow32::nextValue ( )
overridevirtual

Implements KisBufferStreamBase.

Definition at line 87 of file kis_buffer_stream.cc.

88{
89 uint16_t remain = m_depth;
90 uint32_t value = 0;
91 while (remain > 0) {
92 uint16_t toread = remain;
93 if (toread > m_posinc) toread = m_posinc;
94 remain -= toread;
95 m_posinc -= toread;
96 value = (value) | ((((*m_srcIt) >> (m_posinc)) & ((1 << toread) - 1U)) << (m_depth - 8U - remain));
97 if (m_posinc == 0) {
98 m_srcIt++;
99 m_lineOffset++; // we consumed a byte
100 m_posinc = 8U;
101 }
102 }
103 if (m_lineOffset >= m_lineSize) {
104 m_lineNumber += 1;
105 m_lineOffset = 0;
106 }
107 return value;
108}
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: