Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b87efcf8 authored by Danesh M's avatar Danesh M Committed by Abhisek Devkota
Browse files

ScreenCap : Add jpeg support

Change-Id: Ibd5050c79774d06f30b2f668160cdeca75f1bc58
(cherry picked from commit c1fd7edd)
parent c1a96ca9
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ static void usage(const char* pname)
            "usage: %s [-hp] [-d display-id] [FILENAME]\n"
            "   -h: this message\n"
            "   -p: save the file as a png.\n"
            "   -j: save the file as a jpeg.\n"
            "   -d: specify the display id to capture, default %d.\n"
            "If FILENAME ends with .png it will be saved as a png.\n"
            "If FILENAME is not given, the results will be printed to stdout.\n",
@@ -92,13 +93,17 @@ int main(int argc, char** argv)

    const char* pname = argv[0];
    bool png = false;
    bool jpeg = false;
    int32_t displayId = DEFAULT_DISPLAY_ID;
    int c;
    while ((c = getopt(argc, argv, "phd:")) != -1) {
    while ((c = getopt(argc, argv, "pjhd:")) != -1) {
        switch (c) {
            case 'p':
                png = true;
                break;
            case 'j':
                jpeg = true;
                break;
            case 'd':
                displayId = atoi(optarg);
                break;
@@ -122,8 +127,14 @@ int main(int argc, char** argv)
            return 1;
        }
        const int len = strlen(fn);
        if (len >= 4 && 0 == strcmp(fn+len-4, ".png")) {
        if (len >= 4) {
            if (0 == strcmp(fn+len-4, ".png")) {
                png = true;
            } else if (0 == strcmp(fn+len-4, ".jpg")) {
                jpeg = true;
            } else if (len > 4 && 0 == strcmp(fn+len-5, ".jpeg")) {
                jpeg = true;
            }
        }
    }
    
@@ -173,14 +184,15 @@ int main(int argc, char** argv)
    }

    if (base) {
        if (png) {
        if (png || jpeg) {
            const SkImageInfo info = SkImageInfo::Make(w, h, flinger2skia(f),
                                                       kPremul_SkAlphaType);
            SkBitmap b;
            b.installPixels(info, const_cast<void*>(base), s*bytesPerPixel(f));
            SkDynamicMemoryWStream stream;
            SkImageEncoder::EncodeStream(&stream, b,
                    SkImageEncoder::kPNG_Type, SkImageEncoder::kDefaultQuality);
                    png ? SkImageEncoder::kPNG_Type : SkImageEncoder::kJPEG_Type,
                    SkImageEncoder::kDefaultQuality);
            SkData* streamData = stream.copyToData();
            write(fd, streamData->data(), streamData->size());
            streamData->unref();