Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
GrQuadBuffer< T >::Iter Class Reference

#include <GrQuadBuffer.h>

Public Member Functions

 Iter (const GrQuadBuffer< T > *buffer)
 
bool next ()
 
const Tmetadata () const
 
GrQuaddeviceQuad ()
 
GrQuadlocalQuad ()
 
bool isLocalValid () const
 

Detailed Description

template<typename T>
class GrQuadBuffer< T >::Iter

Definition at line 65 of file GrQuadBuffer.h.

Constructor & Destructor Documentation

◆ Iter()

template<typename T >
GrQuadBuffer< T >::Iter::Iter ( const GrQuadBuffer< T > *  buffer)
inline

Definition at line 67 of file GrQuadBuffer.h.

68 : fDeviceQuad(SkRect::MakeEmpty())
69 , fLocalQuad(SkRect::MakeEmpty())
70 , fBuffer(buffer)
71 , fCurrentEntry(nullptr)
72 , fNextEntry(buffer->fData.begin()) {
73 SkDEBUGCODE(fExpectedCount = buffer->count();)
74 }
#define SkDEBUGCODE(...)
Definition SkDebug.h:23
static const uint8_t buffer[]
static constexpr SkRect MakeEmpty()
Definition SkRect.h:595

Member Function Documentation

◆ deviceQuad()

template<typename T >
GrQuad * GrQuadBuffer< T >::Iter::deviceQuad ( )
inline

Definition at line 83 of file GrQuadBuffer.h.

83{ this->validate(); return &fDeviceQuad; }

◆ isLocalValid()

template<typename T >
bool GrQuadBuffer< T >::Iter::isLocalValid ( ) const
inline

Definition at line 92 of file GrQuadBuffer.h.

92 {
93 this->validate();
94 return fBuffer->header(fCurrentEntry)->fHasLocals;
95 }

◆ localQuad()

template<typename T >
GrQuad * GrQuadBuffer< T >::Iter::localQuad ( )
inline

Definition at line 87 of file GrQuadBuffer.h.

87 {
88 this->validate();
89 return this->isLocalValid() ? &fLocalQuad : nullptr;
90 }
bool isLocalValid() const

◆ metadata()

template<typename T >
const T & GrQuadBuffer< T >::Iter::metadata ( ) const
inline

Definition at line 78 of file GrQuadBuffer.h.

78{ this->validate(); return *(fBuffer->metadata(fCurrentEntry)); }

◆ next()

template<typename T >
bool GrQuadBuffer< T >::Iter::next ( )

Definition at line 338 of file GrQuadBuffer.h.

338 {
339 SkASSERT(fNextEntry);
340 if (fNextEntry >= fBuffer->fData.end()) {
341 return false;
342 }
343 // There is at least one more entry, so store the current start for metadata access
344 fCurrentEntry = fNextEntry;
345
346 // And then unpack the device and optional local coordinates into fDeviceQuad and fLocalQuad
347 const Header* h = fBuffer->header(fCurrentEntry);
348 const float* coords = fBuffer->coords(fCurrentEntry);
349 coords = fBuffer->unpackQuad(static_cast<GrQuad::Type>(h->fDeviceType), coords, &fDeviceQuad);
350 if (h->fHasLocals) {
351 coords = fBuffer->unpackQuad(static_cast<GrQuad::Type>(h->fLocalType), coords, &fLocalQuad);
352 } // else localQuad() will return a nullptr so no need to reset fLocalQuad
353
354 // At this point, coords points to the start of the next entry
355 fNextEntry = static_cast<const char*>(static_cast<const void*>(coords));
356 SkASSERT((fNextEntry - fCurrentEntry) == fBuffer->entrySize(h));
357 return true;
358}
#define SkASSERT(cond)
Definition SkAssert.h:116
SkScalar h

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