X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fgdi%2Fpicload.cpp;h=7fabef5e9f3dc744f1464eec15e28f5dcb65df6d;hb=a7db0579fc84bfa07c977638325b54c28d7644ce;hp=375f33fbed30195f2b474bd9820f004d848be1e5;hpb=09565fe7720e8e042712b42a9dc7aac2949130cb;p=vuplus_dvbapp diff --git a/lib/gdi/picload.cpp b/lib/gdi/picload.cpp index 375f33f..7fabef5 100644 --- a/lib/gdi/picload.cpp +++ b/lib/gdi/picload.cpp @@ -288,24 +288,12 @@ static unsigned char *png_load(const char *file, int *ox, int *oy) png_read_info(png_ptr, info_ptr); png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL); - if (color_type == PNG_COLOR_TYPE_PALETTE) - { - png_set_palette_to_rgb(png_ptr); - png_set_background(png_ptr, (png_color_16 *)&my_background, PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); - } - if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - png_set_gray_to_rgb(png_ptr); - png_set_background(png_ptr, (png_color_16 *)&my_background, PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); - } - if (color_type & PNG_COLOR_MASK_ALPHA) - png_set_strip_alpha(png_ptr); - - if (bit_depth < 8) - png_set_packing(png_ptr); - + if ((color_type == PNG_COLOR_TYPE_PALETTE)||(color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)||(png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))) + png_set_expand(png_ptr); if (bit_depth == 16) png_set_strip_16(png_ptr); + if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + png_set_gray_to_rgb(png_ptr); int number_passes = png_set_interlace_handling(png_ptr); png_read_update_info(png_ptr, info_ptr); @@ -683,6 +671,7 @@ void ePicLoad::decodeThumb() m_filepara->id = F_JPEG; eDebug("[Picload] Cache File found"); } + fclose(f); } } @@ -1015,12 +1004,12 @@ RESULT ePicLoad::setPara(PyObject *val) return 0; else { ePyObject fast = PySequence_Fast(val, ""); - m_conf.max_x = PyInt_AsLong( PySequence_Fast_GET_ITEM(val, 0)); - m_conf.max_y = PyInt_AsLong( PySequence_Fast_GET_ITEM(val, 1)); - m_conf.aspect_ratio = (double)PyInt_AsLong( PySequence_Fast_GET_ITEM(val, 2)) / PyInt_AsLong(PySequence_Fast_GET_ITEM(val, 3)); - m_conf.usecache = PyInt_AsLong( PySequence_Fast_GET_ITEM(val, 4)); - m_conf.resizetype = PyInt_AsLong( PySequence_Fast_GET_ITEM(val, 5)); - const char *bg_str = PyString_AsString( PySequence_Fast_GET_ITEM(val, 6)); + m_conf.max_x = PyInt_AsLong( PySequence_Fast_GET_ITEM(fast, 0)); + m_conf.max_y = PyInt_AsLong( PySequence_Fast_GET_ITEM(fast, 1)); + m_conf.aspect_ratio = (double)PyInt_AsLong( PySequence_Fast_GET_ITEM(fast, 2)) / PyInt_AsLong(PySequence_Fast_GET_ITEM(fast, 3)); + m_conf.usecache = PyInt_AsLong( PySequence_Fast_GET_ITEM(fast, 4)); + m_conf.resizetype = PyInt_AsLong( PySequence_Fast_GET_ITEM(fast, 5)); + const char *bg_str = PyString_AsString( PySequence_Fast_GET_ITEM(fast, 6)); if(bg_str[0] == '#' && strlen(bg_str)==9) {