Ignore:
Timestamp:
May 6, 2016, 3:06:29 PM (8 years ago)
Author:
meunier
Message:
  • Added several versions of rosenfeld: { SLOW, FAST } x { FEATURES, NO_FEATURES }
  • Added native linux compilation support
  • Added a script to check results natively
  • Started to refactor nrc code
File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/applications/rosenfeld/src/bmpNR.c

    r798 r821  
    1111#include <math.h>
    1212
    13 /* -- image -- */
    14 #ifdef CLI
    1513#include "nrc_os_config.h"
    1614#include "nrtype.h"
     
    1816#include "nrmacro.h"
    1917#include "nralloc.h"
    20 #endif
    2118
    2219#if TARGET_OS == LINUX
     
    3734#define BI_RGB 0L
    3835
    39 PRIVATE void ReadBMProw  (int fd, long width, uint8 * row);
    40 PRIVATE void WriteBMProw (uint8 * row, long width, int fd);
    41 //PRIVATE void SetupPalette (RGBQUAD Palette[]);
    42 
    43 #if (!defined(WIN32) && !defined(_WINDOWS_) && !defined(_WINGDI_))
    44 //#pragma message("bmpio.h no WINDOWS echo")
    45 PRIVATE void Palette_RGBQuad2RGBQUAD(RGBQuad * src, RGBQUAD dst[]);
    46 #endif
    47 
    48 /* ------------------------------------- */
    49 uint8 *ui8ArrayAppend(uint8 *ptr, uint8 x)
    50     /* ------------------------------------- */
     36static void ReadBMProw(int fd, long width, uint8 * row);
     37static void WriteBMProw(uint8 * row, long width, int fd);
     38static void Palette_RGBQuad2RGBQUAD(RGBQuad * src, RGBQUAD dst[]);
     39
     40/* --------------------------------------- */
     41uint8 * ui8ArrayAppend(uint8 * ptr, uint8 x)
     42/* --------------------------------------- */
    5143{
    5244    *ptr++ = x;
    5345    return ptr;
    5446}
     47
    5548/* ---------------------------------------- */
    56 uint8 *ui16ArrayAppend(uint8 *ptr, uint16 x)
    57     /* ---------------------------------------- */
     49uint8 * ui16ArrayAppend(uint8 * ptr, uint16 x)
     50/* ---------------------------------------- */
    5851{
    5952    uint8 x0, x1;
     
    6760    return ptr;
    6861}
    69 /* -------------------------------------- */
    70 uint8 *ui32ArrayAppend(uint8 *ptr, uint32 x)
    71     /* -------------------------------------- */
     62
     63/* ---------------------------------------- */
     64uint8 * ui32ArrayAppend(uint8 * ptr, uint32 x)
     65/* ---------------------------------------- */
    7266{
    7367    uint8 x0, x1, x2, x3;
     
    8579    return ptr;
    8680}
     81
    8782// Seul moyen de cache dans la librairie ces putains de types windoze
    8883
    8984// --------------------------------------------------------
    90 PRIVATE void ReadBMProw(int fd, long width, uint8 *row)
    91     // --------------------------------------------------------
     85static void ReadBMProw(int fd, long width, uint8 * row)
     86// --------------------------------------------------------
    9287{
    9388    // Le fichier est ouvert (en lecture) et ne sera pas ferme a la fin
    9489    read(fd, row, sizeof(uint8) * width);
    9590}
     91
    9692// ---------------------------------------------------------
    97 PRIVATE void WriteBMProw(uint8 *row, long width, int fd)
    98     // ---------------------------------------------------------
     93static void WriteBMProw(uint8 * row, long width, int fd)
     94// ---------------------------------------------------------
    9995{
    10096    // Le fichier est deja ouvert et ne sera pas ferme a la fin
    10197    write(fd, row, sizeof(uint8) * width);
    10298}
    103 #if (!defined(WIN32) && !defined(_WINDOWS_) && !defined(_WINGDI_))
    104 //#pragma message("bmpio.h no WINDOWS echo")
     99
    105100/* ----------------------------------------------------------- */
    106 PRIVATE void Palette_RGBQuad2RGBQUAD(RGBQuad *src, RGBQUAD dst[])
    107     /* ----------------------------------------------------------- */
     101static void Palette_RGBQuad2RGBQUAD(RGBQuad * src, RGBQUAD dst[])
     102/* ----------------------------------------------------------- */
    108103{
    109104    int i;
     
    115110    }
    116111}
    117 #endif
    118 
    119 #if (!defined(WIN32) && !defined(_WINDOWS_) && !defined(_WINGDI_))
    120 //#pragma message("bmpio.h no WINDOWS echo")
    121 /* --------------------------------------------------------------------------- */
    122 IMAGE_EXPORT(int) SaveBMP0_ui8matrix(uint8 **m, int width, int height, RGBQuad *palette_RGBQuad, char *filename)
     112
     113IMAGE_EXPORT(int) SaveBMP0_ui8matrix(uint8 ** m, int width, int height, RGBQuad * palette_RGBQuad, char * filename)
    123114    /* --------------------------------------------------------------------------- */
    124115    /* sauvegarde 'image' au format bmp dans le fichier 'filename' */
    125116{
    126     int rc = 0;
    127 
    128117    int v_offset = 0; // no more implemented image->v_offset;
    129118    int h_offset = 0; // no more implemented image->h_offset;
    130119    int vmax = height - v_offset;
    131     //int hmax = width - h_offset;
    132     int height_utile = height - 2*v_offset;
    133     int width_utile = width - 2*h_offset;
     120    int height_utile = height - 2 * v_offset;
     121    int width_utile = width - 2 * h_offset;
    134122    int taille_utile  = height_utile * width_utile;
    135123
    136     //int size;
    137124    int padding_len;
    138125
    139126    BITMAPFILEHEADER Bitmap_File_Header;
    140     /*BITMAPINFO;      Bitmap_Info; */
    141 
    142127    BITMAPINFOHEADER Bitmap_Info_Header;
    143     /*RGBQUAD          RGB_Quad; */
    144128
    145129    RGBQUAD palette_RGBQUAD[256]; /* Windows */
     
    156140
    157141    /* --- Header --- */
    158     Bitmap_File_Header.bfType      = (WORD) BM;   /* BM                            */
    159     Bitmap_File_Header.bfSize      = (DWORD) sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQuad)+taille_utile;    /* taille avec header et palette */
    160     Bitmap_File_Header.bfReserved1 = (WORD) 0; /* 0                             */
    161     Bitmap_File_Header.bfReserved2 = (WORD) 0; /* 0                             */
    162     Bitmap_File_Header.bfOffBits   = (DWORD) sizeof(BITMAPFILEHEADER) +
    163         (DWORD) sizeof(BITMAPINFOHEADER) +
    164         (DWORD) sizeof(RGBQUAD)*256;   /* */
     142    Bitmap_File_Header.bfType      = (WORD) BM;   /* BM */
     143    /* taille avec header et palette */
     144    Bitmap_File_Header.bfSize      = (DWORD) sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQuad) + taille_utile;
     145    Bitmap_File_Header.bfReserved1 = (WORD) 0; /* 0 */
     146    Bitmap_File_Header.bfReserved2 = (WORD) 0; /* 0 */
     147    Bitmap_File_Header.bfOffBits   = (DWORD) sizeof(BITMAPFILEHEADER) + (DWORD) sizeof(BITMAPINFOHEADER) + (DWORD) sizeof(RGBQUAD)*256;   /* */
    165148
    166149
     
    182165    fd = open(filename, O_CREAT | O_TRUNC);
    183166    if (fd < 0) {
    184         printf("*** Erreur : Ouverture du fichier impossible dans SaveBMP");
     167        printf("\n*** Erreur : Ouverture du fichier impossible dans SaveBMP\n");
     168        return -1;
    185169    }
    186170
     
    215199    }
    216200    close(fd);
    217     return rc;
    218 
    219 }
    220 #endif
    221 // ------------------------------------------------------------------------------------------------------------
    222 IMAGE_EXPORT(int) SaveBMP2_ui8matrix(uint8 **m, int width, int height, RGBQuad *palette_RGBQuad, char *filename)
    223     // ------------------------------------------------------------------------------------------------------------
    224     // sauvegarde 'image' au format bmp dans le fichier 'filename'
     201    return 0;
     202
     203}
     204
     205// ----------------------------------------------------------------------------------------------------------------
     206IMAGE_EXPORT(int) SaveBMP2_ui8matrix(uint8 ** m, int width, int height, RGBQuad * palette_RGBQuad, char * filename)
     207// ----------------------------------------------------------------------------------------------------------------
     208// sauvegarde 'image' au format bmp dans le fichier 'filename'
    225209{
    226210    int taille_utile  = height * width;
    227 
    228     //int size;
    229211    int padding_len;
    230212
     
    241223    int fd;
    242224    int  i;
    243 
    244     //#pragma message("BMP warnin' data structure aligment must be 2")
    245     //#pragma message("  sizeof( BitmapFileHeader) must = 14, not 16")
    246225
    247226    //DEBUG(printf("BMP0 : %d %d\n", sizeof( BITMAPFILEHEADER), sizeof( BITMAPINFOHEADER)));
     
    298277    //printf("   SaveBMP %s %dx%d\n", filename, width, height);
    299278
    300     fd = open(filename, O_CREAT | O_TRUNC);
     279#if TARGET_OS != GIETVM
     280    fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
     281#else
     282    fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC);
     283#endif
    301284    if (fd < 0) {
    302         printf("*** Erreur : ouverture du fichier '%s' impossible dans SaveBMP", filename);
     285        printf("\n*** Erreur : ouverture du fichier '%s' impossible dans SaveBMP\n", filename);
     286        return -1;
    303287    }
    304288
     
    326310
    327311
    328     // en 2x car le compilo est trop con ...
    329312    padding_len = width % 4;
    330313    padding_len = (4 - padding_len) % 4;
Note: See TracChangeset for help on using the changeset viewer.