Exemplo n.º 1
0
bool wxBitmapDataObject::SetData(size_t size, const void *buf)
{
    Clear();

#if wxUSE_LIBPNG
    m_pngSize = size;
    m_pngData = malloc(m_pngSize);

    memcpy( m_pngData, buf, m_pngSize );

    wxMemoryInputStream mstream( (char*) m_pngData, m_pngSize );
    wxImage image;
    wxPNGHandler handler;
    if ( !handler.LoadFile( &image, mstream ) )
    {
        return false;
    }

    m_bitmap = image;

    return m_bitmap.IsOk();
#else
    return false;
#endif
}
Exemplo n.º 2
0
static void test_buffer(skiatest::Reporter* reporter) {
    SkRandom rand;
    SkAutoMalloc am(MAX_SIZE * 2);
    char* storage = (char*)am.get();
    char* storage2 = storage + MAX_SIZE;

    random_fill(rand, storage, MAX_SIZE);

    for (int sizeTimes = 0; sizeTimes < 100; sizeTimes++) {
        int size = rand.nextU() % MAX_SIZE;
        if (size == 0) {
            size = MAX_SIZE;
        }
        for (int times = 0; times < 100; times++) {
            int bufferSize = 1 + (rand.nextU() & 0xFFFF);
            SkMemoryStream mstream(storage, size);
            SkBufferStream bstream(&mstream, bufferSize);

            int bytesRead = 0;
            while (bytesRead < size) {
                int s = 17 + (rand.nextU() & 0xFFFF);
                int ss = bstream.read(storage2, s);
                REPORTER_ASSERT(reporter, ss > 0 && ss <= s);
                REPORTER_ASSERT(reporter, bytesRead + ss <= size);
                REPORTER_ASSERT(reporter,
                                memcmp(storage + bytesRead, storage2, ss) == 0);
                bytesRead += ss;
            }
            REPORTER_ASSERT(reporter, bytesRead == size);
        }
    }
}
Exemplo n.º 3
0
    JsonDocument JsonParseBytes(const char* _bytes, size_t _length, const char** _error, size_t* _errorOffset) {

        JsonDocument document;
        rapidjson::MemoryStream mstream(_bytes, _length);
        rapidjson::EncodedInputStream<rapidjson::UTF8<char>, rapidjson::MemoryStream> istream(mstream);
        document.ParseStream(istream);

        *_error = nullptr;
        *_errorOffset = 0;
        if (document.HasParseError()) {
            *_error = rapidjson::GetParseError_En(document.GetParseError());
            *_errorOffset = document.GetErrorOffset();
        }

        return document;

    }
Exemplo n.º 4
0
void wxBitmapDataObject::DoConvertToPng()
{
#if wxUSE_LIBPNG
    if (!m_bitmap.IsOk())
        return;

    wxImage image = m_bitmap.ConvertToImage();
    wxPNGHandler handler;

    wxCountingOutputStream count;
    handler.SaveFile( &image, count );

    m_pngSize = count.GetSize() + 100; // sometimes the size seems to vary ???
    m_pngData = malloc(m_pngSize);

    wxMemoryOutputStream mstream( (char*) m_pngData, m_pngSize );
    handler.SaveFile( &image, mstream );
#endif
}