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

#include <kis_buffer_stream.h>

+ Inheritance diagram for KisBufferStreamContigBelow16:

Public Member Functions

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

Constructor & Destructor Documentation

◆ KisBufferStreamContigBelow16()

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

Definition at line 66 of file kis_buffer_stream.h.

67 : KisBufferStreamContigBase(src, depth, lineSize)
68 {
69 }
KisBufferStreamContigBase(uint8_t *src, uint16_t depth, tsize_t lineSize)

◆ ~KisBufferStreamContigBelow16()

KisBufferStreamContigBelow16::~KisBufferStreamContigBelow16 ( )
overridedefault

Member Function Documentation

◆ nextValue()

uint32_t KisBufferStreamContigBelow16::nextValue ( )
overridevirtual

Implements KisBufferStreamBase.

Definition at line 64 of file kis_buffer_stream.cc.

65{
66 uint16_t remain = m_depth;
67 uint32_t value = 0 ;
68 while (remain > 0) {
69 uint16_t toread = remain;
70 if (toread > m_posinc) toread = m_posinc;
71 remain -= toread;
72 m_posinc -= toread;
73 value = (value << toread) | (((*m_srcIt) >> (m_posinc)) & ((1 << toread) - 1));
74 if (m_posinc == 0) {
75 m_srcIt++;
76 m_lineOffset++; // we consumed a byte
77 m_posinc = 8;
78 }
79 }
80 if (m_lineOffset >= m_lineSize) {
81 m_lineNumber += 1;
82 m_lineOffset = 0;
83 }
84 return value;
85}
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: