MO_oC
Elfmaker
Регистрация: 2.9.10 Сообщений: 30 Репутация: 538
#11 [07.09.10, 08:53] Re: Полезные функции
DuXeN0N , W660_R8BB001_ORANGE : atoi is 44215D85
Спасибо сказали: farid
diezil
Patcher
Регистрация: 22.9.07 Сообщений: 83 Репутация: 2033 Откуда: England
#12 [25.04.11, 14:47] Re: Полезные функции
Код:
#define TextID_CreateImageID( imageid ) ( imageid + 0x78000000 )
w800 r1db001, w810 r4ea031, w580 r8be001, k850 r1fa035
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 ]
C902 R3EG004 AS
Извините за мой русский (Google Translate
)
Спасибо сказали: zylka, farid
den_po
Developer/Admin
Регистрация: 27.3.06 Сообщений: 3279 Репутация: 10763 Откуда: Чебоксары
#13 [26.04.11, 00:06] Re: Полезные функции
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
promt is better than google translate
diezil
Patcher
Регистрация: 22.9.07 Сообщений: 83 Репутация: 2033 Откуда: England
#14 [29.12.12, 06:41] Re: Полезные функции
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
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 EDIT:
Corrected memory leak in the above code
[ Редактировано diezil в 29.12.12 18:11 ]
Прикрепленный к сообщению файл: C902 R3EG004 AS
Извините за мой русский (Google Translate
)
Спасибо сказали: a6b6, Therion, Metaler
Похожие темы
Вы не можете начинать темы. Вы не можете редактировать свои сообщения. Вы не можете создавать опросы. Вы не можете вкладывать файлы в сообщения. Вы не можете отвечать на сообщения. Вы не можете удалять свои сообщения. Вы не можете голосовать.