Полезные функции : Эльфостроение : Форум

Страница 2 из 2: « 1 [2]

 MO_oC:
07.09.10, 08:53
 DuXeN0N, W660_R8BB001_ORANGE : atoi is 44215D85

 diezil:
25.04.11, 14:47
 Код:
#define TextID_CreateImageID( imageid ) ( imageid + 0x78000000 )


w800 r1db001, w810 r4ea031, w580 r8be001, k850 r1fa035 :lol:

eg...
Код: 
MessageBox( EMPTY_TEXTID, TextID_CreateImageID( 0xF35F ), NOIMAGE, 1, 5000, book );


enum ALIGN {
    LEFT=0,
    RIGHT,
    CENTER
};
DrawString( 
    TextID_CreateImageID( 0xE5D5 ), RIGHT, 
    1, 1, 
    240, 2, 
    0, 0, 
    0, 0 );


en:
I think its the same for every phone, but just in case, it can be found here

ru:
Я думаю, его же для каждого телефона, но на всякий случай, он может быть найден здесь

w800 r1db001 0x44EF3DEC
w810 r4ea031 0x452FE2F8
w580 r8be001 0x4506A6C8
k850 r1fa035 0x1125FCB4

en:
You can also merge with a TEXTID using ENC_TEXTID flag, used for drawing icons in ListMenu_SetItemSecondLineText etc... =)
PS: I only tested DrawString(...) on DB2020, cannot guarantee it will work on other platforms using dll etc...

ru:
Вы также можете присоединиться к TEXTID использованием ENC_TEXTID флаг, используется для рисования иконок в ListMenu_SetItemSecondLineText итд... =)
PS: Я только проверил DrawString (...) на DB2020, не может гарантировать, она будет работать на других платформах использованием DLL и т.д. ..

//-------

oh and

Код:
#define TextID_CreateInt24ID( num ) ( num + 0x70000000 )


[ Редактировано diezil в 25.4.11 12:01 ]

 den_po:
26.04.11, 00:06
 
diezil пишет:
Код:
#define TextID_CreateImageID( imageid ) ( imageid + 0x78000000 )


svn\SE\SCalka\calc_object.c
svn\SE\Tamagochi\gui.c
svn\SE\Tamagochi\main.c
svn\SE\Gono4ki\MyFUNC.c
svn\SE\Tamagochi\status.c
svn\SE\SCalka\calc_menu.cpp
svn\SE\mcse\gui.cpp
svn\SE\BcfgEdit\main.cpp
svn\SE\SoftEdit\menu.cpp
svn\SE\SoftEdit\menu_onLB.cpp
svn\SE\BcfgEdit\visual.cpp

;-)

 diezil:
29.12.12, 06:41
 basic function for converting, resize and stretching images using "GC_PutChar()" and saving them back to file.
attached images used in example code (in = 240*320 jpg - out 480*640 png )

code is for C902AS
Код: 

typedef struct
{
    int unk0;
    int unk1;
    int width;
    int height;
    void* pixel_data;
    int sizeof_pixel_data;
} CANVAS_DESC;


#define GET_BITDEPTH( __PCANVAS_DESC__ ) \
            (((__PCANVAS_DESC__->sizeof_pixel_data)<<3) \
            /(__PCANVAS_DESC__->width*__PCANVAS_DESC__->height))


void my_png_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
{
    int* io_ptr = (int*)png_get_io_ptr(png_ptr);
    w_fwrite( *io_ptr, data, length );
}

void my_png_flush(png_structp png_ptr)
{
}

int ImageID_SaveAsPNG( IMAGEID iid, wchar_t* fullpath, int new_width, int new_height )
{
    int width = new_width; if ( width == 0 ) width = GetImageWidth( iid );
    int height = new_height; if ( height == 0 ) height = GetImageHeight( iid );
    
    GC* pGC = GC_CreateMemoryGC( width, height, 32, 0, 0, 0 );
    int* ptr = (int*)pGC->pcanvas;
    int* ptr1 = (int*)ptr[3];
    int* ptr2 = (int*)ptr1[1];
    
    CANVAS_DESC* canvas_desc = (CANVAS_DESC*)ptr2[5];    
#ifdef _PRESERVE_ALPHA_
    memset( (void*)canvas_desc->pixel_data, 0, canvas_desc->sizeof_pixel_data );
#else
    GC_DrawFRect( pGC, 0xFF000000, 0, 0, canvas_desc->width, canvas_desc->height );
#endif
    GC_PutChar( pGC, 0, 0, canvas_desc->width, canvas_desc->height, iid );
    
    int my_file = w_fopen( fullpath, WA_Create, 0x1FF, 0 );
    if ( my_file >= 0 )
    {
        png_structp png_ptr;
        png_infop info_ptr;
        png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
        info_ptr = png_create_info_struct(png_ptr);
        png_set_IHDR(png_ptr, info_ptr, canvas_desc->width, canvas_desc->height,
                 8, PNG_COLOR_TYPE_RGBA, PNG_INTERLACE_NONE,
                 PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
        png_set_bgr(png_ptr);
        png_set_write_fn(png_ptr, &my_file, my_png_write_data, my_png_flush);
        
        png_write_info(png_ptr, info_ptr);
        
        int size = png_get_rowbytes(png_ptr,info_ptr);
        int i_ptr=0;
        for (int y=0; y<canvas_desc->height; y++)
        {
            png_byte* ptr = (png_byte*)i_ptr+(int)canvas_desc->pixel_data;
            png_write_row(png_ptr, ptr);
            i_ptr += size;
        }
        png_write_end(png_ptr, NULL);
        png_destroy_write_struct(&png_ptr, &info_ptr);
        w_fclose( my_file );
    }
    GC_FreeGC( pGC );
    return 0;
}

void func()
{
    IMAGEID iid;
    
    ImageID_Get( L"/card/other", L"in_jpeg.jpg", &iid );
    ImageID_SaveAsPNG( iid, L"card/other/out_png.png", 
              GetImageWidth( iid )*2, GetImageHeight( iid )*2);
    ImageID_Free( iid );
}


CANVAS_DESC* can also be found in structs "GVI_BMP and GVI_GC", it can be useful for alpha blending with GVI =)
Код: 
typedef struct
{
    int unk0;
    int unk1;
    int unk2;
    int unk3;
    int unk4;
    CANVAS_DESC* pcanvas_desc;
} UNK_STRUCT;

typedef struct
{
    int unk0;
    UNK_STRUCT* unk1;
    int unk2;
    int unk3;
    int width;
    int height;
    char unk4[ 64 ];
} _GVI_GC;

typedef struct
{
    int unk0;
    int unk1;
    int unk2;
    void* unk3;
    void* unk4;
    CANVAS_DESC* pcanvas_desc;
    int unk6;
    int unk7;
} _GVI_BMP;


I'm new to pnglib and I get mem leakin my elf, I don't know if this is because of the setup of my pnglib/zlib or if my png code is bad :oops:

EDIT:
Corrected memory leak in the above code =)

[ Редактировано diezil в 29.12.12 18:11 ]

Прикрепленный к сообщению файл:

out_png.png out_png.png (150.40 kb; 164 hits) Скачать файл
in_jpeg.jpg in_jpeg.jpg (70.71 kb; 166 hits) Скачать файл
Страница 2 из 2: « 1 [2]

URL этой темы:
https://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=4672&start=10

© 2005-2018 supertrubka.org