本文整理汇总了C++中SkDEBUGFAIL函数的典型用法代码示例。如果您正苦于以下问题:C++ SkDEBUGFAIL函数的具体用法?C++ SkDEBUGFAIL怎么用?C++ SkDEBUGFAIL使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了SkDEBUGFAIL函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: switch
SkCanvas* SkDocument::beginPage(SkScalar width, SkScalar height,
const SkRect* content) {
if (width <= 0 || height <= 0) {
return NULL;
}
SkRect outer = SkRect::MakeWH(width, height);
SkRect inner;
if (content) {
inner = *content;
if (!inner.intersect(outer)) {
return NULL;
}
} else {
inner = outer;
}
for (;;) {
switch (fState) {
case kBetweenPages_State:
fState = kInPage_State;
return this->onBeginPage(width, height, inner);
case kInPage_State:
this->endPage();
break;
case kClosed_State:
return NULL;
}
}
SkDEBUGFAIL("never get here");
return NULL;
}
示例2: SkImageMakeRasterCopyAndAssignColorSpace
sk_sp<SkImage> SkImageMakeRasterCopyAndAssignColorSpace(const SkImage* src,
SkColorSpace* colorSpace) {
// Read the pixels out of the source image, with no conversion
SkImageInfo info = as_IB(src)->onImageInfo();
if (kUnknown_SkColorType == info.colorType()) {
SkDEBUGFAIL("Unexpected color type");
return nullptr;
}
size_t rowBytes = info.minRowBytes();
size_t size = info.computeByteSize(rowBytes);
if (SkImageInfo::ByteSizeOverflowed(size)) {
return nullptr;
}
auto data = SkData::MakeUninitialized(size);
if (!data) {
return nullptr;
}
SkPixmap pm(info, data->writable_data(), rowBytes);
if (!src->readPixels(pm, 0, 0, SkImage::kDisallow_CachingHint)) {
return nullptr;
}
// Wrap them in a new image with a different color space
return SkImage::MakeRasterData(info.makeColorSpace(sk_ref_sp(colorSpace)), data, rowBytes);
}
示例3: SkDEBUGFAIL
void Task::spawnChild(Task* task) {
if (!task->usesGpu()) {
fTaskRunner->add(task);
} else {
SkDEBUGFAIL("Sorry, we can't spawn GPU tasks. :( See comment in TaskRunner::wait().");
}
}
示例4: VALIDATE
void GrGLBuffer::onUnmap() {
if (this->wasDestroyed()) {
return;
}
VALIDATE();
SkASSERT(this->isMapped());
if (0 == fBufferID) {
fMapPtr = nullptr;
return;
}
// bind buffer handles the dirty context
switch (this->glCaps().mapBufferType()) {
case GrGLCaps::kNone_MapBufferType:
SkDEBUGFAIL("Shouldn't get here.");
return;
case GrGLCaps::kMapBuffer_MapBufferType: // fall through
case GrGLCaps::kMapBufferRange_MapBufferType: {
GrGLenum target = this->glGpu()->bindBuffer(fIntendedType, this);
GL_CALL(UnmapBuffer(target));
break;
}
case GrGLCaps::kChromium_MapBufferType:
this->glGpu()->bindBuffer(fIntendedType, this); // TODO: Is this needed?
GL_CALL(UnmapBufferSubData(fMapPtr));
break;
}
fMapPtr = nullptr;
}
示例5: showPathContours
static void showPathContours(SkPath::Iter& iter, const char* pathName) {
uint8_t verb;
SkPoint pts[4];
while ((verb = iter.next(pts)) != SkPath::kDone_Verb) {
switch (verb) {
case SkPath::kMove_Verb:
SkDebugf(" %s.moveTo(%#1.9gf, %#1.9gf);\n", pathName, pts[0].fX, pts[0].fY);
continue;
case SkPath::kLine_Verb:
SkDebugf(" %s.lineTo(%#1.9gf, %#1.9gf);\n", pathName, pts[1].fX, pts[1].fY);
break;
case SkPath::kQuad_Verb:
SkDebugf(" %s.quadTo(%#1.9gf, %#1.9gf, %#1.9gf, %#1.9gf);\n", pathName,
pts[1].fX, pts[1].fY, pts[2].fX, pts[2].fY);
break;
case SkPath::kCubic_Verb:
SkDebugf(" %s.cubicTo(%#1.9gf, %#1.9gf, %#1.9gf, %#1.9gf, %#1.9gf, %#1.9gf);\n",
pathName, pts[1].fX, pts[1].fY, pts[2].fX, pts[2].fY, pts[3].fX, pts[3].fY);
break;
case SkPath::kClose_Verb:
SkDebugf(" %s.close();\n", pathName);
break;
default:
SkDEBUGFAIL("bad verb");
return;
}
}
}
示例6: switch
const char* SkImageDecoder::GetFormatName(Format format) {
switch (format) {
case kUnknown_Format:
return "Unknown Format";
case kBMP_Format:
return "BMP";
case kGIF_Format:
return "GIF";
case kICO_Format:
return "ICO";
case kPKM_Format:
return "PKM";
case kKTX_Format:
return "KTX";
case kJPEG_Format:
return "JPEG";
case kPNG_Format:
return "PNG";
case kWBMP_Format:
return "WBMP";
case kWEBP_Format:
return "WEBP";
default:
SkDEBUGFAIL("Invalid format type!");
}
return "Unknown Format";
}
示例7: set_paintflat
static void set_paintflat(SkPaint* paint, SkFlattenable* obj, unsigned paintFlat) {
SkASSERT(paintFlat < kCount_PaintFlats);
switch (paintFlat) {
case kColorFilter_PaintFlat:
paint->setColorFilter((SkColorFilter*)obj);
break;
case kDrawLooper_PaintFlat:
paint->setLooper((SkDrawLooper*)obj);
break;
case kMaskFilter_PaintFlat:
paint->setMaskFilter((SkMaskFilter*)obj);
break;
case kPathEffect_PaintFlat:
paint->setPathEffect((SkPathEffect*)obj);
break;
case kRasterizer_PaintFlat:
paint->setRasterizer((SkRasterizer*)obj);
break;
case kShader_PaintFlat:
paint->setShader((SkShader*)obj);
break;
case kImageFilter_PaintFlat:
paint->setImageFilter((SkImageFilter*)obj);
break;
case kXfermode_PaintFlat:
paint->setXfermode((SkXfermode*)obj);
break;
default:
SkDEBUGFAIL("never gets here");
}
}
示例8: drawFrame
static void drawFrame(SkBitmap* bm, const SavedImage* frame, const ColorMapObject* cmap)
{
int transparent = -1;
for (int i = 0; i < frame->ExtensionBlockCount; ++i) {
ExtensionBlock* eb = frame->ExtensionBlocks + i;
if (eb->Function == GRAPHICS_EXT_FUNC_CODE &&
eb->ByteCount == 4) {
bool has_transparency = ((eb->Bytes[0] & 1) == 1);
if (has_transparency) {
transparent = (unsigned char)eb->Bytes[3];
}
}
}
if (frame->ImageDesc.ColorMap != NULL) {
// use local color table
cmap = frame->ImageDesc.ColorMap;
}
if (cmap == NULL || cmap->ColorCount != (1 << cmap->BitsPerPixel)) {
SkDEBUGFAIL("bad colortable setup");
return;
}
#if GIFLIB_MAJOR < 5
// before GIFLIB 5, de-interlacing wasn't done by library at load time
if (frame->ImageDesc.Interlace) {
blitInterlace(bm, frame, cmap, transparent);
return;
}
#endif
blitNormal(bm, frame, cmap, transparent);
}
示例9: time
/* Fill out buffer with the compressed format Ganesh expects from a colortable
based bitmap. [palette (colortable) + indices].
At the moment Ganesh only supports 8bit version. If Ganesh allowed we others
we could detect that the colortable.count is <= 16, and then repack the
indices as nibbles to save RAM, but it would take more time (i.e. a lot
slower than memcpy), so skipping that for now.
Ganesh wants a full 256 palette entry, even though Skia's ctable is only as big
as the colortable.count says it is.
*/
static void build_compressed_data(void* buffer, const SkBitmap& bitmap) {
SkASSERT(SkBitmap::kIndex8_Config == bitmap.config());
SkAutoLockPixels apl(bitmap);
if (!bitmap.readyToDraw()) {
SkDEBUGFAIL("bitmap not ready to draw!");
return;
}
SkColorTable* ctable = bitmap.getColorTable();
char* dst = (char*)buffer;
memcpy(dst, ctable->lockColors(), ctable->count() * sizeof(SkPMColor));
ctable->unlockColors(false);
// always skip a full 256 number of entries, even if we memcpy'd fewer
dst += kGrColorTableSize;
if (bitmap.width() == bitmap.rowBytes()) {
memcpy(dst, bitmap.getPixels(), bitmap.getSize());
} else {
// need to trim off the extra bytes per row
size_t width = bitmap.width();
size_t rowBytes = bitmap.rowBytes();
const char* src = (const char*)bitmap.getPixels();
for (int y = 0; y < bitmap.height(); y++) {
memcpy(dst, src, width);
src += rowBytes;
dst += width;
}
}
}
示例10: find_best_face
static SkTypeface* find_best_face(const FamilyRec* family,
SkTypeface::Style style) {
SkTypeface* const* faces = family->fFaces;
if (faces[style] != NULL) { // exact match
return faces[style];
}
// look for a matching bold
style = (SkTypeface::Style)(style ^ SkTypeface::kItalic);
if (faces[style] != NULL) {
return faces[style];
}
// look for the plain
if (faces[SkTypeface::kNormal] != NULL) {
return faces[SkTypeface::kNormal];
}
// look for anything
for (int i = 0; i < 4; i++) {
if (faces[i] != NULL) {
return faces[i];
}
}
// should never get here, since the faces list should not be empty
SkDEBUGFAIL("faces list is empty");
return NULL;
}
示例11: switch
SkScalar SkPath1DPathEffect::next(SkPath* dst, SkScalar distance,
SkPathMeasure& meas) const {
switch (fStyle) {
case kTranslate_Style: {
SkPoint pos;
if (meas.getPosTan(distance, &pos, nullptr)) {
dst->addPath(fPath, pos.fX, pos.fY);
}
}
break;
case kRotate_Style: {
SkMatrix matrix;
if (meas.getMatrix(distance, &matrix)) {
dst->addPath(fPath, matrix);
}
}
break;
case kMorph_Style:
morphpath(dst, fPath, meas, distance);
break;
default:
SkDEBUGFAIL("unknown Style enum");
break;
}
return fAdvance;
}
示例12: switch
const char* SkDrawCommand::GetCommandString(DrawType type) {
switch (type) {
case UNUSED: SkDEBUGFAIL("DrawType UNUSED\n"); break;
case DRAW_CLEAR: return "Clear";
case CLIP_PATH: return "Clip Path";
case CLIP_REGION: return "Clip Region";
case CLIP_RECT: return "Clip Rect";
case CLIP_RRECT: return "Clip RRect";
case CONCAT: return "Concat";
case DRAW_BITMAP: return "Draw Bitmap";
case DRAW_BITMAP_MATRIX: return "Draw Bitmap Matrix";
case DRAW_BITMAP_NINE: return "Draw Bitmap Nine";
case DRAW_BITMAP_RECT_TO_RECT: return "Draw Bitmap Rect";
case DRAW_DATA: return "Draw Data";
case DRAW_OVAL: return "Draw Oval";
case DRAW_PAINT: return "Draw Paint";
case DRAW_PATH: return "Draw Path";
case DRAW_PICTURE: return "Draw Picture";
case DRAW_POINTS: return "Draw Points";
case DRAW_POS_TEXT: return "Draw Pos Text";
case DRAW_POS_TEXT_H: return "Draw Pos Text H";
case DRAW_RECT: return "Draw Rect";
case DRAW_RRECT: return "Draw RRect";
case DRAW_SPRITE: return "Draw Sprite";
case DRAW_TEXT: return "Draw Text";
case DRAW_TEXT_ON_PATH: return "Draw Text On Path";
case DRAW_VERTICES: return "Draw Vertices";
case RESTORE: return "Restore";
case ROTATE: return "Rotate";
case SAVE: return "Save";
case SAVE_LAYER: return "Save Layer";
case SCALE: return "Scale";
case SET_MATRIX: return "Set Matrix";
case SKEW: return "Skew";
case TRANSLATE: return "Translate";
case NOOP: return "NoOp";
case BEGIN_COMMENT_GROUP: return "BeginCommentGroup";
case COMMENT: return "Comment";
case END_COMMENT_GROUP: return "EndCommentGroup";
default:
SkDebugf("DrawType error 0x%08x\n", type);
SkASSERT(0);
break;
}
SkDEBUGFAIL("DrawType UNUSED\n");
return NULL;
}
示例13: add
void add (DiffRecord* drp) {
uint32_t mismatchValue;
if (drp->fBase.fFilename.equals(drp->fComparison.fFilename)) {
fResultsOfType[drp->fResult].push(new SkString(drp->fBase.fFilename));
} else {
SkString* blame = new SkString("(");
blame->append(drp->fBase.fFilename);
blame->append(", ");
blame->append(drp->fComparison.fFilename);
blame->append(")");
fResultsOfType[drp->fResult].push(blame);
}
switch (drp->fResult) {
case DiffRecord::kEqualBits_Result:
fNumMatches++;
break;
case DiffRecord::kEqualPixels_Result:
fNumMatches++;
break;
case DiffRecord::kDifferentSizes_Result:
fNumMismatches++;
break;
case DiffRecord::kDifferentPixels_Result:
fNumMismatches++;
if (drp->fFractionDifference * 100 > fMaxMismatchPercent) {
fMaxMismatchPercent = drp->fFractionDifference * 100;
}
mismatchValue = MAX3(drp->fMaxMismatchR, drp->fMaxMismatchG,
drp->fMaxMismatchB);
if (mismatchValue > fMaxMismatchV) {
fMaxMismatchV = mismatchValue;
}
break;
case DiffRecord::kCouldNotCompare_Result:
fNumMismatches++;
fStatusOfType[drp->fBase.fStatus][drp->fComparison.fStatus].push(
new SkString(drp->fBase.fFilename));
break;
case DiffRecord::kUnknown_Result:
SkDEBUGFAIL("adding uncategorized DiffRecord");
break;
default:
SkDEBUGFAIL("adding DiffRecord with unhandled fResult value");
break;
}
}
示例14: SkASSERT
void SkShader::shadeSpan16(int x, int y, uint16_t span16[], int count) {
SkASSERT(span16);
SkASSERT(count > 0);
SkASSERT(this->canCallShadeSpan16());
// basically, if we get here, the subclass screwed up
SkDEBUGFAIL("kHasSpan16 flag is set, but shadeSpan16() not implemented");
}
示例15: SkASSERT
void SkColorFilter::filterSpan16(const uint16_t s[], int count, uint16_t d[]) {
SkASSERT(this->getFlags() & SkColorFilter::kHasFilter16_Flag);
SkDEBUGFAIL("missing implementation of SkColorFilter::filterSpan16");
if (d != s) {
memcpy(d, s, count * sizeof(uint16_t));
}
}