Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Functions
SkImage_to_PPM_ascii.cpp File Reference
#include "tools/fiddle/examples.h"

Go to the source code of this file.

Functions

 REG_FIDDLE (SkImage_to_PPM_ascii, 256, 256, true, 4)
 

Function Documentation

◆ REG_FIDDLE()

REG_FIDDLE ( SkImage_to_PPM_ascii  ,
256  ,
256  ,
true  ,
 
)

Definition at line 4 of file SkImage_to_PPM_ascii.cpp.

4 {
5void dump_txt(const SkData* data, const char* name) {
6 if (data) {
7 SkDebugf("\ncat > %s << EOF\n", name);
8 size_t s = data->size();
9 const char* d = (const char*)data->bytes();
10 while (s > 0) {
11 int l = (int)std::min(s, (size_t)1024);
12 SkDebugf("%.*s", l, d);
13 s -= l;
14 d += l;
15 }
16 SkDebugf("\nEOF\n\n");
17 }
18}
19
20sk_sp<SkData> Encode_PPM_A(const SkPixmap& src) {
21 if (src.width() <= 0 || src.height() <= 0 || !src.addr() ||
22 src.colorType() == kUnknown_SkColorType) {
23 return nullptr;
24 }
26 SkString s = SkStringPrintf("P3\n%d %d\n255\n", src.width(), src.height());
27 buf.write(s.c_str(), s.size());
28 for (int y = 0; y < src.height(); ++y) {
29 for (int x = 0; x < src.height(); ++x) {
30 char buffer[13];
31 SkColor c = src.getColor(x, y);
32 int n = snprintf(buffer, sizeof(buffer), "%u %u %u\n", SkColorGetR(c),
34 if (n < 6 || n + 1 > (int)sizeof(buffer)) {
35 return nullptr;
36 }
37 buf.write(buffer, n);
38 }
39 }
40 return buf.detachAsData();
41}
42
46 return bitmap;
47}
48
49void draw(SkCanvas*) {
51 sk_sp<SkData> data = Encode_PPM_A(bitmap.pixmap());
52 dump_txt(data.get(), "fooa.ppm");
53}
54} // END FIDDLE
@ kUnknown_SkColorType
uninitialized
Definition SkColorType.h:20
#define SkColorGetR(color)
Definition SkColor.h:65
#define SkColorGetG(color)
Definition SkColor.h:69
uint32_t SkColor
Definition SkColor.h:37
#define SkColorGetB(color)
Definition SkColor.h:73
void SK_SPI SkDebugf(const char format[],...) SK_PRINTF_LIKE(1
SK_API SkString static SkString SkStringPrintf()
Definition SkString.h:287
static void draw(SkCanvas *canvas, SkRect &target, int x, int y)
Definition aaclip.cpp:27
Type::kYUV Type::kRGBA() int(0.7 *637)
bool write(const void *buffer, size_t size) override
Definition SkStream.cpp:535
sk_sp< SkData > detachAsData()
Definition SkStream.cpp:707
bool asLegacyBitmap(SkBitmap *bitmap, LegacyBitmapMode legacyBitmapMode=kRO_LegacyBitmapMode) const
Definition SkImage.cpp:233
@ kRO_LegacyBitmapMode
returned bitmap is read-only and immutable
Definition SkImage.h:826
T * get() const
Definition SkRefCnt.h:303
VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE auto & d
Definition main.cc:19
sk_sp< SkImage > image
Definition examples.cpp:29
struct MyStruct s
static const uint8_t buffer[]
const char * name
Definition fuchsia.cc:50
double y
double x
bool ToBitmap(const SkImage *img, SkBitmap *dst)
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
Definition switches.h:41