Все для Sony Ericsson, патчи, эльфы, моддинг, прошивка
  
Логин: Пароль: Запомнить: Привет гость! Зарегистрируйся или авторизируйся для получения доп. возможностей!
Разделы
PDA версия сайта
TrackIDentify
Новости
Статьи
Файлы
Патчи
Патчи A2
Патчи db2020
Эльфы
Исходники эльфов
Wiki
Форум
Опросы
Обратная связь
Развернуть/Свернуть
 
Развернуть/Свернуть

Полезные функции : Эльфостроение : Эльфы : Форум : Для Sony Ericsson патчи эльфы моддинг прошивка
/  Список форумов
   /  Эльфы
      /  Эльфостроение
   /  Полезные функции
На печать 
Правила 
Страница 2 из 2: « 1 [2]

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 :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 ]




C902 R3EG004 AS
Извините за мой русский (Google Translate :oops:)
Спасибо сказали: zylka, farid

den_po


Developer/Admin


Регистрация: 27.3.06
Сообщений: 3278
Репутация: 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 =)
Код: 
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.pngin_jpeg.jpg


C902 R3EG004 AS
Извините за мой русский (Google Translate :oops:)
Спасибо сказали: a6b6, Therion, Metaler
Страница 2 из 2: « 1 [2]


Похожие темы
 ТемаОтветыАвторПросмотрыОбновление
  Различные функции19E1kolyan2186109.08.12, 16:59
  мои полезные мануалы для К790/K8x0i42D7A5793218.02.11, 10:45

  • Поиск
  • Права
Вы не можете начинать темы.
Вы не можете редактировать свои сообщения.
Вы не можете создавать опросы.
Вы не можете вкладывать файлы в сообщения.
Вы не можете отвечать на сообщения.
Вы не можете удалять свои сообщения.
Вы не можете голосовать.

Главная Новости Статьи Файлы Патчи Форум Опросы PDA
- Генерация страницы: 0.13 секунд | 12 Запросов | HTML: 39.78 КБ -