NO

Recent Posts

Pages: 1 ... 8 9 [10]
91
Graphics programming / Re: Using GDI+
« Last post by HellOfMice on November 03, 2024, 08:36:42 PM »
I am interfacing this example for making a standalone function
The GdiplusShutdown call is missing
92
Graphics programming / Re: Using GDI+
« Last post by Vortex on November 03, 2024, 08:33:27 PM »
Hi HellOfMice,

Here is an example for you :

Code: [Select]
    .if uMsg == WM_CREATE

        mov     rax,OFFSET StartupInfo
        mov     GdiplusStartupInput.GdiplusVersion[rax],1

        invoke  GdiplusStartup,ADDR token,ADDR StartupInfo,0
        invoke  UnicodeStr,ADDR filename,ADDR UnicodeFileName

        invoke  GdipCreateBitmapFromFile,ADDR UnicodeFileName,\
                ADDR BmpImage

        invoke  GdipGetImageWidth,BmpImage,ADDR ImgWidth+rip
        invoke  GdipGetImageHeight,BmpImage,ADDR ImgHeight+rip

        invoke  GdipCreateHBITMAPFromBitmap,BmpImage,\
                ADDR hBitmap+rip,0

        invoke  GdipDisposeImage,BmpImage
93
Graphics programming / Using GDI+
« Last post by HellOfMice on November 03, 2024, 06:32:21 PM »
Hello the World

I load ab image using the flat api of GDI+ with GdipLoadImageFromFileICM(_wFileName,&_Image) or with GdipCreateHBITMAPFromBitmap(GdiPlusBitmap,&_hBitmap,0) ; and I would like to get a BITMAPINFOHEADER or a BITMAPV5HEADER from the GpImage or the GpBitmap.

With the HBITMAP given by GdipCreateHBITMAPFromBitmap if I call GetObject this function returns 0.
My solution is to call GdipLoadImageFromFileICM(_wFileName,&_Image) and retrieve the with and the height with GdipGetImageWidth and GdipGetImageHeight the frees the image and call GDIPlus_GetHBitmapFromFile to get the hbitmap. After I can initialize a BITMAPINFO structure and call GetDIBits.

Is there a better way to do that? If I can get a BITMAPINFOHEADER structure it is good I know how to do after. I don't want to load the file twice.

Please could you help me.

Thank You

Philippe RIO
94
User contributions / Re: Session Traversal Utilities for NAT (STUN) - Client
« Last post by TimoVJL on November 02, 2024, 10:58:38 AM »
it's just size_t / sizeof issue in C macro ?
struct size is less than DWORD max.
95
User contributions / Re: Session Traversal Utilities for NAT (STUN) - Client
« Last post by Vortex on November 02, 2024, 09:58:04 AM »
Hello WiiLF23,

The project is built with some warning messages :

Code: [Select]
Building main.obj.
E:\PellesC\Include\Win\ws2tcpip.h(360): warning #2215: Conversion from 'unsigned long long int' to 'unsigned long int'; possible loss of data or unexpected result.
E:\PellesC\Include\Win\ws2tcpip.h(396): warning #2215: Conversion from 'unsigned long long int' to 'unsigned long int'; possible loss of data or unexpected result.
E:\PellesC\Include\Win\ws2tcpip.h(438): warning #2215: Conversion from 'unsigned long long int' to 'unsigned long int'; possible loss of data or unexpected result.
E:\PellesC\Include\Win\ws2tcpip.h(475): warning #2215: Conversion from 'unsigned long long int' to 'unsigned long int'; possible loss of data or unexpected result.
Building main.res.
Building STUN Client.exe.
Done.

Compiler : Pelles C V12
96
User contributions / Session Traversal Utilities for NAT (STUN) - Client
« Last post by WiiLF23 on November 02, 2024, 03:05:52 AM »
Just something I pieced together, converted main functions from C++ -> C, and implemented a GUI. I needed a easy testing client for NAT traversal work. This just made sense.

For those who would like to use it.

x64

Credits to https://gist.github.com/jyaif/

----

Updated:
- Added NAT type
- Added local and public endpoint address fields
- Added XOR MAPPED ADDRESS attribute feedback

Updated - 1.0.5
- Updated resource file to contain file metadata
- Updated UI functions to respect Unicode
- Fixed incorrect window class name
- Handle EN_CHANGE event to automatically parse and send request to pasted server address
- Added icon on dialog to indicate connection states

Updated - 1.0.7
- Updated Edit controls for responsiveness
- Addressed memory leak on close
- Added field check on server and numeric/range check on port
97
Beginner questions / Re: FindFirstFile / FindNextFile
« Last post by HellOfMice on November 01, 2024, 09:30:18 AM »
Now my problem is solved.

I searched all the files the stored into a SQLite3 table
When finished
I cross this table to load each file stored in the table and load them one by one to fill another table with more informations
Code: [Select]
[vendredi 1 novembre 2024 09:23:44] : File #35013 = C:\Users\_______\Documents\# Collections\# Women\# White Background\# White Background-00163.jpg
[vendredi 1 novembre 2024 09:23:44] : File #35014 = C:\Users\_______\Documents\# Collections\# Women\# White Background\# White Background-00164.jpg
[vendredi 1 novembre 2024 09:23:44] : File #35015 = C:\Users\_______\Documents\# Collections\# Women\# White Background\# White Background-00165.jpg
[vendredi 1 novembre 2024 09:23:44] : File #35016 = C:\Users\_______\Documents\# Collections\# Women\# White Background\# White Background-00166.jpg
[vendredi 1 novembre 2024 09:23:44] : File #35017 = C:\Users\_______\Documents\# Collections\# Women\# White Background\# White Background-00167.jpg
[vendredi 1 novembre 2024 09:23:44] : Searching for files ended
[vendredi 1 novembre 2024 09:23:44] : Closing Log file
[vendredi 1 novembre 2024 09:23:44] :
*** Log Stoped ***

Thank you to the people who helped me
98
Beginner questions / Re: FindFirstFile / FindNextFile
« Last post by HellOfMice on October 31, 2024, 10:02:34 AM »
Timo I tested you program and it find all the 35 023 files! :D


If I only search the files for all the directories I get the same result. Now I have to search where is the problem.


Thank you for your help
99
Beginner questions / Re: FindFirstFile / FindNextFile
« Last post by HellOfMice on October 31, 2024, 09:17:20 AM »
Here is my function
Code: [Select]

void SearchForFile(HWND __hWnd,LPSTR __lpszCurrentFolderName,LPBYTE __lpColors)
{
    register            int                     _iIndexColor ;
    register            int                     _iNumberOfColors ;

    alignas(__int64)    LPDWORD                 _lpImageBits ;
    alignas(__int64)    WIN32_FIND_DATA         _FileFind ;
    alignas(__int64)    HANDLE                  _hFind ;
    alignas(__int64)    HSTMT                   _hSQLiteFind ;
    alignas(__int64)    LPSTR                   _lpszTemp, _lpszErrorMsg ;
    alignas(__int64)    LPIMAGEINFOS            _lpImageInfos ;
    alignas(int)        clock_t                 _InitialTimeStamp, _iCounter ;
    alignas(int)        int                     _i, _iImageSize ;
    alignas(int)        char                    _szParentFolder[MAX_PATH + 4] ;
    alignas(int)        char                    _szImageFile[MAX_PATH + 4] ;
    alignas(int)        char                    _szNewImageFile[MAX_PATH + 4] ;
    alignas(int)        char                    _szTmp1[256] ;

    _InitialTimeStamp = clock() ;
    _iCounter = iAnalyzerRecordNumber ;

    sqlite3_snprintf(sizeof(_szParentFolder),_szParentFolder,"%s\\*.*",__lpszCurrentFolderName) ;
    sqlite3_snprintf(sizeof(_szNewImageFile),_szNewImageFile,"%s\\%%s",__lpszCurrentFolderName) ;

//  _hFind=FindFirstFileEx(_szParentFolder,FindExInfoBasic,&_FileFind,FindExSearchNameMatch,NULL,FIND_FIRST_EX_LARGE_FETCH) ;
    _hFind = FindFirstFile(_szParentFolder,&_FileFind) ;
    if(_hFind == INVALID_HANDLE_VALUE)
        return ;

    do
    {
        if(lstrcmp(_FileFind.cFileName,".") != 0)
        {
            if(lstrcmp(_FileFind.cFileName,"..") != 0)
            {
                if((_FileFind.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
                {
                    if((_FileFind.nFileSizeHigh + _FileFind.nFileSizeLow) > 0)
                    {
                        if(_FileFind.nFileSizeHigh == 0)
                        {
                            sqlite3_snprintf(sizeof(_szImageFile),_szImageFile,_szNewImageFile,_FileFind.cFileName) ;

                            _lpImageInfos = LoadImageFromFile(_szImageFile) ;
                            if(_lpImageInfos)
                            {
                                _lpImageBits = (LPDWORD) _lpImageInfos->lpImageBits ;
                                _iImageSize = _lpImageInfos->BitmapInfo.bmiHeader.bV5SizeImage / 4 ;
//  _____________________________________________________________________________________________
//  ____________________ Compute the number of colors ___________________________________________
//  _____________________________________________________________________________________________

                                MemorySetTo0(__lpColors,sizeof(BYTE) * MAX_COLORS) ;

                                _iNumberOfColors = 0 ;

                                for(_i = 0 ; _i < _iImageSize ; _i++)
                                {
                                    _iIndexColor = (int) (DWORD) *_lpImageBits ;

                                    if(*(__lpColors + _iIndexColor) == 0)
                                    {
                                        *(__lpColors + _iIndexColor) = 1 ;
                                        _iNumberOfColors++ ;
                                    }

                                    _lpImageBits++ ;
                                }

                                _lpImageInfos->SsiInfos.NumberOfColors = _iNumberOfColors ;
//  _____________________________________________________________________________________________
//  ____________________ Compute the Mean _______________________________________________________
//  _____________________________________________________________________________________________

                                ComputeTheMean(_lpImageInfos,1) ;

//  _____________________________________________________________________________________________
//  ____________________ Compute deviations from the mean _______________________________________
//  _____________________________________________________________________________________________

                                ComputeTheDeviation(_lpImageInfos,1) ;
//  _____________________________________________________________________________________________
//  ____________________ Compute Standard Deviation _____________________________________________
//  _____________________________________________________________________________________________

                                ComputeTheStandardDeviation(_lpImageInfos,1) ;
//  _____________________________________________________________________________________________
//  ____________________ Compute Ratio Image Width / Image Height ______________________________
//  _____________________________________________________________________________________________

                                _lpImageInfos->ImageSource.dRatio = ((double) _lpImageInfos->BitmapInfo.bmiHeader.bV5Width) / ((double) _lpImageInfos->BitmapInfo.bmiHeader.bV5Height) ;
//  _____________________________________________________________________________________________
//  ____________________ Compute Image Orientation and Form _____________________________________
//  _____________________________________________________________________________________________

                                if(_lpImageInfos->BitmapInfo.bmiHeader.bV5Width > _lpImageInfos->BitmapInfo.bmiHeader.bV5Height)
                                    _lpImageInfos->ImageSource.dwSensImage  = IMAGE_ORIENTATION_LANDSCAPE ;
                                else
                                {
                                    if(_lpImageInfos->BitmapInfo.bmiHeader.bV5Width == _lpImageInfos->BitmapInfo.bmiHeader.bV5Height)
                                        _lpImageInfos->ImageSource.dwSensImage  = IMAGE_ORIENTATION_SQUARE ;
                                    else
                                        _lpImageInfos->ImageSource.dwSensImage  = IMAGE_ORIENTATION_PORTRAIT ;
                                }

                                _lpImageInfos->SsiInfos.FileTime = _FileFind.ftCreationTime ;
                                _lpImageInfos->SsiInfos.FileSize = _FileFind.nFileSizeLow ;

                                Keccak((LPBYTE) _lpImageInfos->lpImageBits,_lpImageInfos->BitmapInfo.bmiHeader.bV5SizeImage,SQLiteBuffer) ;
                                Hex2Str(SQLiteBuffer,_lpImageInfos->ImageSource.szHashImage,256 / ;

                                _lpszTemp = ReadWholeFile(_szImageFile) ;
                                if(_lpszTemp)
                                {
                                    Keccak((LPBYTE) _lpszTemp,_FileFind.nFileSizeLow,SQLiteBuffer) ;
                                    Hex2Str(SQLiteBuffer,_lpImageInfos->ImageSource.szHashWoleFile,256 / ;
                                    VirtualFree(_lpszTemp,0,MEM_RELEASE) ;
                                }
//  _____________________________________________________________________________________________
//  ____________________ Store results __________________________________________________________
//  _____________________________________________________________________________________________

                                _lpImageInfos->SsiInfos.FileTime = _FileFind.ftCreationTime ;
                                _lpImageInfos->SsiInfos.FileSize = _FileFind.nFileSizeLow ;

                                ConvertTimeToString(&_FileFind.ftCreationTime,_szTmp1,sizeof(_szTmp1)) ;

/*                              sqlite3_snprintf(sizeof(SQLiteBuffer),SQLiteBuffer,
                                                            "\n*******************************\n"
                                                            "            File (%5.5d) = %s\n"
                                                            "               File Time = %s\n"
                                                            "               File Size = %d bytes\n"
                                                            "          In memory size = %u bytes\n"
                                                            "    Image Width x Height = %d x %d\n"
                                                            "                  StdDev = %8.3f,%8.3f,%8.3f\n"
                                                            "               Deviation = %8.3f,%8.3f,%8.3f\n"
                                                            "                    Mean = %8.3f,%8.3f,%8.3f\n"
                                                            " Number of UNIQUE Colors = %d\n"
                                                            "              Hash Image = %s\n"
                                                            "               Hash File = %s\n"
                                                            "*******************************\n",
                                                        iAnalyzerRecordNumber,_szImageFile,_szTmp1,_lpImageInfos->SsiInfos.FileSize,_lpImageInfos->BitmapInfo.bmiHeader.bV5SizeImage,
                                                        _lpImageInfos->BitmapInfo.bmiHeader.bV5Width,_lpImageInfos->BitmapInfo.bmiHeader.bV5Height,
                                                        _lpImageInfos->ImageSource.StdDevRed,_lpImageInfos->ImageSource.StdDevGreen,_lpImageInfos->ImageSource.StdDevBlue,
                                                        _lpImageInfos->ImageSource.DevRed,_lpImageInfos->ImageSource.DevGreen,_lpImageInfos->ImageSource.DevBlue,
                                                        _lpImageInfos->ImageSource.MeanRed,_lpImageInfos->ImageSource.MeanGreen,_lpImageInfos->ImageSource.MeanBlue,
                                                        _lpImageInfos->SsiInfos.NumberOfColors,_lpImageInfos->ImageSource.szHashImage,_lpImageInfos->ImageSource.szHashWoleFile) ;

                                Log(SQLiteBuffer) ;*/

                                MakeGrayImage(__hWnd,_szImageFile,_lpImageInfos,Profile.WorkingImageSize,Profile.GrayConversionMethod,Profile.ResizeMethod) ;

//  _____________________________________________________________________________________________
//  ____________________ Store the datas ________________________________________________________
//  _____________________________________________________________________________________________

                                sqlite3_snprintf(sizeof(SQLiteBuffer),SQLiteBuffer,"File number %d",iAnalyzerRecordNumber) ;
                                Log(SQLiteBuffer) ;

                                sqlite3_snprintf(sizeof(SQLiteBuffer),SQLiteBuffer,szInsertAnalyzer,
                                                        iAnalyzerRecordNumber,                          // RecordNumber
                                                        _szImageFile,                                   // FullFileName
                                                        _FileFind.ftCreationTime.dwLowDateTime,         // ColorsFileCreationDateLow
                                                        _FileFind.ftCreationTime.dwHighDateTime,        // ColorsFileCreationDateHigh
                                                        _FileFind.nFileSizeLow,                         // ColorsFileSize
                                                        _lpImageInfos->ImageSource.szHashWoleFile,      // ColorsHashFileContent
                                                        _lpImageInfos->ImageSource.szHashImage,         // ColorsHashImage
                                                        _lpImageInfos->SsiInfos.ImageWidth,             // ColorsImageWidth
                                                        _lpImageInfos->SsiInfos.ImageHeight,            // ColorsImageHeight
                                                        _lpImageInfos->ImageSource.dwSensImage,         // ColorsImageOrientation
                                                        _lpImageInfos->SsiInfos.NumberOfColors,         // ColorsNumberUniqueColors
                                                        _lpImageInfos->ImageSource.dRatio,              // ColorsImageRatio
                                                        _lpImageInfos->ImageSource.StdDevRed,           // ColorsStdDevRed
                                                        _lpImageInfos->ImageSource.StdDevGreen,         // ColorsStdDevGreen
                                                        _lpImageInfos->ImageSource.StdDevBlue,          // ColorsStdDevBlue
                                                        _lpImageInfos->ImageSource.DevRed,              // ColorsDeviationRed
                                                        _lpImageInfos->ImageSource.DevGreen,            // ColorsDeviationGreen
                                                        _lpImageInfos->ImageSource.DevBlue,             // ColorsDeviationBlue
                                                        _lpImageInfos->ImageSource.MeanRed,             // ColorsMeanRed
                                                        _lpImageInfos->ImageSource.MeanGreen,           // ColorsMeanGreen
                                                        _lpImageInfos->ImageSource.MeanBlue,            // ColorsMeanBlue
                                                        _lpImageInfos->SsiWorkInfos.ImageWidth,         // GrayImageWidth
                                                        _lpImageInfos->SsiWorkInfos.ImageHeight,        // GrayImageHeight
                                                        _lpImageInfos->ImageWork.dwSensImage,           // GrayImageOrientation
                                                        _lpImageInfos->SsiWorkInfos.NumberOfColors,     // GrayNumberUniqueColors
                                                        _lpImageInfos->ImageWork.dRatio,                // GrayImageRatio
                                                        _lpImageInfos->ImageWork.StdDevRed,             // GrayStdDevRed
                                                        _lpImageInfos->ImageWork.StdDevGreen,           // GrayStdDevGreen
                                                        _lpImageInfos->ImageWork.StdDevBlue,            // GrayStdDevBlue
                                                        _lpImageInfos->ImageWork.DevRed,                // GrayDeviationRed
                                                        _lpImageInfos->ImageWork.DevGreen,              // GrayDeviationGreen
                                                        _lpImageInfos->ImageWork.DevBlue,               // GrayDeviationBlue
                                                        _lpImageInfos->ImageWork.MeanRed,               // GrayMeanRed
                                                        _lpImageInfos->ImageWork.MeanGreen,             // GrayMeanGreen
                                                        _lpImageInfos->ImageWork.MeanBlue) ;            // GrayMeanBlue

//                              Log(SQLiteBuffer) ;

                                if(sqlite3_prepare_v2(hSQLite,SQLiteBuffer,-1,&_hSQLiteFind,NULL) != SQLITE_OK)
                                {
                                    Image_Free(_lpImageInfos) ;

                                    SQLite_Error(__hWnd) ;
                                    Error(__hWnd,"Error while creating INSERT query for table Analyzer") ;
                                }

                                if(sqlite3_exec(hSQLite,SQLiteBuffer,NULL,NULL,&_lpszErrorMsg) != SQLITE_OK)
                                {
                                    Image_Free(_lpImageInfos) ;

                                    Error(__hWnd,_lpszErrorMsg) ;
                                    sqlite3_free(_lpszErrorMsg) ;

                                    Image_Free(_lpImageInfos) ;
                                    break ;
                                }

                                iAnalyzerRecordNumber++ ;

                                Image_Free(_lpImageInfos) ;
                            }
                        }
                    }
                }
            }
        }
    } while(FindNextFile(_hFind,&_FileFind) != 0) ;

    if(GetLastError() != ERROR_NO_MORE_FILES)
        Error(__hWnd,"Cannot continue the research, sorry") ;

    _InitialTimeStamp = clock() - _InitialTimeStamp ;
    sqlite3_snprintf(sizeof(SQLiteBuffer),SQLiteBuffer,"\n**********************\n%d files treated in %lu clock hits\n**********************\n",iAnalyzerRecordNumber - _iCounter,_InitialTimeStamp) ;
    Log(SQLiteBuffer) ;

    FindClose(_hFind) ;

    return ;
}
100
Beginner questions / Re: FindFirstFile / FindNextFile
« Last post by HellOfMice on October 31, 2024, 09:12:32 AM »
Thank You Timo I have a look and I take it. :D :D :D :D
Pages: 1 ... 8 9 [10]