/[projet1]/public/pc/tools/osdk/main/pictconv/sources/hires.cpp
Defence Force logotype

Diff of /public/pc/tools/osdk/main/pictconv/sources/hires.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 973 by mmu_man, Tue Sep 25 23:44:44 2012 UTC revision 974 by dbug, Sun Nov 24 13:29:03 2013 UTC
# Line 8  Line 8 
8  #include <stdlib.h>  #include <stdlib.h>
9  #include <sys/types.h>  #include <sys/types.h>
10  #include <sys/stat.h>  #include <sys/stat.h>
11    
12    #ifndef _WIN32
13  #include <unistd.h>  #include <unistd.h>
14    #endif
15    
16  #include "defines.h"  #include "defines.h"
17    
# Line 22  Line 25 
25    
26    
27  PictureConverter::PictureConverter(MACHINE machine)     :  PictureConverter::PictureConverter(MACHINE machine)     :
28          m_machine(machine)  m_machine(machine)
29  {  {
30          m_dither        =DITHER_NONE;    m_dither      =DITHER_NONE;
31          m_flag_debug=false;    m_flag_debug=false;
32          m_block_data="";    m_block_data="";
33  }  }
34    
35  PictureConverter::~PictureConverter()  PictureConverter::~PictureConverter()
# Line 35  PictureConverter::~PictureConverter() Line 38  PictureConverter::~PictureConverter()
38    
39  PictureConverter* PictureConverter::GetConverter(MACHINE machine)  PictureConverter* PictureConverter::GetConverter(MACHINE machine)
40  {  {
41          switch (machine)    switch (machine)
42          {    {
43          case MACHINE_ORIC:    case MACHINE_ORIC:
44                  return new OricPictureConverter();      return new OricPictureConverter();
45                  break;      break;
46    
47          case MACHINE_ATARIST:    case MACHINE_ATARIST:
48                  return new AtariPictureConverter();      return new AtariPictureConverter();
49                  break;      break;
50    
51          default:    default:
52                  // Invalid type      // Invalid type
53                  return 0;      return 0;
54                  break;      break;
55          }    }
56  }  }
57    
58  void PictureConverter::SetDither(DITHER dither)          void PictureConverter::SetDither(DITHER dither)        
59  {  {
60          static bool flagDitherGenerated=false;    static bool flagDitherGenerated=false;
61          if (!flagDitherGenerated)    if (!flagDitherGenerated)
62          {    {
63                  GenerateDitherTable();      GenerateDitherTable();
64                  flagDitherGenerated=true;      flagDitherGenerated=true;
65          }    }
66          m_dither=dither;    m_dither=dither;
67  }  }
68    
69    
70  bool PictureConverter::Save(int output_format,const std::string& output_filename,TextFileGenerator& cTextFileGenerator)  bool PictureConverter::Save(int output_format,const std::string& output_filename,TextFileGenerator& textFileGenerator)
71  {  {
72          //    //
73          // Save the bitmap to TAP format    // Save the bitmap to TAP format
74          //    //
75          //char name[_MAX_FNAME];    //char name[_MAX_FNAME];
76          //char ext[_MAX_EXT];    //char ext[_MAX_EXT];
77          //_splitpath(output_filename.c_str(),0,0,name,ext);    //_splitpath(output_filename.c_str(),0,0,name,ext);
78    
79          //    //
80          // Save the hir buffer    // Save the hir buffer
81          //    //
82          switch (output_format)    switch (output_format)
83          {    {
84          case DEVICE_FORMAT_BASIC_TAPE:    case DEVICE_FORMAT_BASIC_TAPE:
85          case DEVICE_FORMAT_TAPE:    case DEVICE_FORMAT_TAPE:
86          case DEVICE_FORMAT_RAWBUFFER:    case DEVICE_FORMAT_RAWBUFFER:
87          case DEVICE_FORMAT_RAWBUFFER_WITH_XYHEADER:    case DEVICE_FORMAT_RAWBUFFER_WITH_XYHEADER:
88          case DEVICE_FORMAT_RAWBUFFER_WITH_PALETTE:    case DEVICE_FORMAT_RAWBUFFER_WITH_PALETTE:
89                  {      {
90                          long handle=open(output_filename.c_str(),O_TRUNC|O_BINARY|O_CREAT|O_WRONLY,S_IREAD|S_IWRITE);        long handle=open(output_filename.c_str(),O_TRUNC|O_BINARY|O_CREAT|O_WRONLY,S_IREAD|S_IWRITE);
91                          if (handle==-1)        if (handle==-1)
92                          {        {
93                                  printf("_openErrorwrite");       //write          printf("_openErrorwrite");       //write
94                                  exit(1);          exit(1);
95                          }        }
96    
97                          SaveToFile(handle,output_format);        SaveToFile(handle,output_format);
98    
99                          close(handle);        close(handle);
100                          return true;        return true;
101                  }      }
102                  break;      break;
103    
104          case DEVICE_FORMAT_SOURCE_C:    case DEVICE_FORMAT_SOURCE_C:
105          case DEVICE_FORMAT_SOURCE_S:    case DEVICE_FORMAT_SOURCE_S:
106          case DEVICE_FORMAT_SOURCE_BASIC:    case DEVICE_FORMAT_SOURCE_BASIC:
107                  {      {
108                          std::string cDestString;        std::string destString;
109                          cTextFileGenerator.ConvertData(cDestString,(unsigned char*)GetBufferData(),GetBufferSize());        
110          destString+=textFileGenerator.ConvertData((unsigned char*)GetBufferData(),GetBufferSize());
111                          if (!SaveFile(output_filename.c_str(),cDestString.c_str(),cDestString.size()))  
112                          {        // Possibly we have a second buffer to save
113                                  ShowError("Unable to save the destination file");        if (GetSecondaryBufferSize())
114                          }        {
115                          return true;          destString+=textFileGenerator.ConvertData((unsigned char*)GetSecondaryBufferData(),GetSecondaryBufferSize());
116                  }        }
117                  break;  
118          if (!SaveFile(output_filename.c_str(),destString.c_str(),destString.size()))
119          case DEVICE_FORMAT_PICTURE:        {
120                  {          ShowError("Unable to save the destination file");
121                          //        }
122                          // Convert the hires picture back to a RGB one        return true;
123                          //      }
124                          ImageContainer snapshot;      break;
125                          if (!TakeSnapShot(snapshot))  
126                          {    case DEVICE_FORMAT_PICTURE:
127                                  ShowError("Unable to take TakeSnapShot");      {
128                          }        //
129          // Convert the hires picture back to a RGB one
130                          if (!snapshot.SavePicture(output_filename))        //
131                          {        ImageContainer snapshot;
132                                  ShowError("Unable to save the snapshot file");        if (!TakeSnapShot(snapshot))
133                          }        {
134                          return true;          ShowError("Unable to take TakeSnapShot");
135                  }        }
136                  break;  
137          if (!snapshot.SavePicture(output_filename))
138          default:        {
139                  break;          ShowError("Unable to save the snapshot file");
140          }        }
141          return true;
142        }
143        break;
144    
145      default:
146        break;
147      }
148    
149          return false;    return false;
150  }  }
151    

Legend:
Removed from v.973  
changed lines
  Added in v.974

  ViewVC Help
Powered by ViewVC 1.1.26