Esempio n. 1
0
    public int ExtractMask(string InFile)
    {
        StreamReader streamReader;

        try
        {
            streamReader = new StreamReader(InFile);
        }
        catch (Exception)
        {
            System.Console.WriteLine("Unable to open LCD mask file:" + InFile);
            return(-1);
        }
        string directoryName            = AppDomain.CurrentDomain.BaseDirectory;      //Path.GetDirectoryName(InFile);
        string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(InFile);

        Path.GetExtension(InFile);
        string   text2    = directoryName + fileNameWithoutExtension + ".bmp";
        FileInfo fileInfo = new FileInfo(InFile);

        fileDat = new byte[fileInfo.Length];
        streamReader.BaseStream.Read(fileDat, 0, fileDat.Length);
        streamReader.Close();
        spi_file_head_t spi_file_head_t = default(spi_file_head_t);

        byte[] array = new byte[Marshal.SizeOf((object)spi_file_head_t)];
        Buffer.BlockCopy(fileDat, 0, array, 0, Marshal.SizeOf((object)spi_file_head_t));
        spi_file_head_t = (spi_file_head_t)BytesToStruct(array, Marshal.SizeOf((object)spi_file_head_t), spi_file_head_t.GetType());
        if (spi_file_head_t.magic_num == (SPI_FILE_MAGIC_BASE | 0x1F))
        {
            byte[] array6 = new byte[spi_file_head_t.file_size];
            Buffer.BlockCopy(fileDat, Marshal.SizeOf((object)spi_file_head_t), array6, 0, (int)spi_file_head_t.file_size);
            if (!GetDataPicture(26, 43, array6, text2))
            {
                return(-1);
            }
        }
        else
        {
            System.Console.WriteLine("Invalid LCD mask file!");
            return(-1);
        }
        return(0);
    }
Esempio n. 2
0
    public int LoadUI(string InFile, string OutFolder)
    {
        int          ImageNum = 0;
        StreamReader streamReader;

        try
        {
            streamReader = new StreamReader(InFile);
        }
        catch (Exception)
        {
            System.Console.WriteLine("Unable to open UI file:" + InFile);
            return(ImageNum);
        }
        string path = AppDomain.CurrentDomain.BaseDirectory + "\\" + OutFolder;

        try
        {
            Directory.CreateDirectory(path);
        }
        catch (Exception)
        {
            System.Console.WriteLine("Unable to create output folder:" + path);
            return(ImageNum);
        }
        StreamWriter streamWriter;
        string       text = path + "\\UItable.csv";

        try
        {
            streamWriter = new StreamWriter(text);
        }
        catch (Exception)
        {
            System.Console.WriteLine("Unable to generate UI table file:" + text);
            return(ImageNum);
        }

        FileInfo fileInfo = new FileInfo(InFile);

        fileDat = new byte[fileInfo.Length];
        streamReader.BaseStream.Read(fileDat, 0, fileDat.Length);
        streamReader.Close();
        spi_file_head_t spi_file_head_t = default(spi_file_head_t);

        byte[] array = new byte[Marshal.SizeOf((object)spi_file_head_t)];
        Buffer.BlockCopy(fileDat, 0, array, 0, Marshal.SizeOf((object)spi_file_head_t));
        spi_file_head_t = (spi_file_head_t)BytesToStruct(array, Marshal.SizeOf((object)spi_file_head_t), spi_file_head_t.GetType());
        if (spi_file_head_t.magic_num == (SPI_FILE_MAGIC_BASE | 0xC))
        {
            ui_head_t ui_head_t = default(ui_head_t);
            streamWriter.WriteLine("Image UID,Offset,Xpos,Ypos,Xwidth,Yheight,Reserved");
            for (int i = 0; i < MaxImages; i++)
            {
                byte[] array5 = new byte[Marshal.SizeOf((object)ui_head_t)];
                Buffer.BlockCopy(fileDat, 8 + i * Marshal.SizeOf((object)ui_head_t), array5, 0, Marshal.SizeOf((object)ui_head_t));
                ui_head_t = (ui_head_t)BytesToStruct(array5, Marshal.SizeOf((object)ui_head_t), ui_head_t.GetType());
                //Add entry to UI table
                streamWriter.WriteLine("{0},{1},{2},{3},{4},{5},{6}", (ui_head_t.ui_magic & 0xFFFF), ui_head_t.offset, ui_head_t.x_pos, ui_head_t.y_pos, ui_head_t.x_width, ui_head_t.y_height, ui_head_t.reserved);
                //Save image (if present)
                if (ui_head_t.ui_magic == 0)
                {
                    continue;                                                  //Missing image. Skip.
                }
                if (ui_head_t.ui_magic == (uint)(i | (int)UI_BMP_MAGIC_BASE))
                {
                    if (ui_head_t.offset < fileDat.Length)
                    {
                        Buffer.BlockCopy(fileDat, ui_head_t.offset, array, 0, Marshal.SizeOf((object)spi_file_head_t));
                        spi_file_head_t = (spi_file_head_t)BytesToStruct(array, Marshal.SizeOf((object)spi_file_head_t), spi_file_head_t.GetType());
                        if (spi_file_head_t.magic_num != (uint)((int)UI_BMP_MAGIC_BASE | i))
                        {
                            System.Console.WriteLine("Image header error: {0}", i);
                            continue;
                        }
                        byte[] array6 = new byte[spi_file_head_t.file_size];
                        Buffer.BlockCopy(fileDat, ui_head_t.offset + Marshal.SizeOf((object)spi_file_head_t), array6, 0, (int)spi_file_head_t.file_size);
                        if (m_ImageStream != null)
                        {
                            m_ImageStream.Close();
                            m_ImageStream.Dispose();
                            m_ImageStream = null;
                        }
                        string text2 = AppDomain.CurrentDomain.BaseDirectory + "\\" + OutFolder + "\\" + i.ToString() + ".bmp";
                        if (GetDataPicture(ui_head_t.x_width, ui_head_t.y_height, array6, text2))
                        {
                            ImageNum++;
                            BitmapImage bitmapImage = new BitmapImage();
                            m_ImageStream = new FileStream(text2, FileMode.Open);
                            bitmapImage.BeginInit();
                            bitmapImage.StreamSource = m_ImageStream;
                            bitmapImage.EndInit();
                        }
                        else
                        {
                            System.Console.WriteLine("Image decoding error: {0}", i);
                            streamWriter.Close();
                            return(ImageNum);
                        }
                    }
                    else
                    {
                        System.Console.WriteLine("Image offset error:{0}", i);
                        streamWriter.Close();
                        return(ImageNum);
                    }
                }
                else
                {
                    System.Console.WriteLine("Unable to generate image:{0}", i);
                    streamWriter.Close();
                    return(ImageNum);
                }
            }
        }
        else
        {
            System.Console.WriteLine("Invalid UI file!");
            streamWriter.Close();
            return(ImageNum);
        }
        streamWriter.Close();
        return(ImageNum);
    }
Esempio n. 3
0
    public int LoadUI(string InFile)
    {
        int          ImageNum = 0;
        StreamReader streamReader;

        try
        {
            streamReader = new StreamReader(InFile);
        }
        catch (Exception)
        {
            System.Console.WriteLine("Unable to open UI file:" + InFile);
            return(ImageNum);
        }
        FileInfo fileInfo = new FileInfo(InFile);

        fileDat = new byte[fileInfo.Length];
        streamReader.BaseStream.Read(fileDat, 0, fileDat.Length);
        streamReader.Close();
        spi_file_head_t spi_file_head_t = default(spi_file_head_t);

        byte[] array = new byte[Marshal.SizeOf((object)spi_file_head_t)];
        Buffer.BlockCopy(fileDat, 0, array, 0, Marshal.SizeOf((object)spi_file_head_t));
        spi_file_head_t = (spi_file_head_t)BytesToStruct(array, Marshal.SizeOf((object)spi_file_head_t), spi_file_head_t.GetType());
        if (spi_file_head_t.magic_num == (SPI_FILE_MAGIC_BASE | 0xC))
        {
            if (spi_file_head_t.file_size + 8 < fileInfo.Length)
            {
                System.Console.WriteLine("The file contains multiple UIs. The file will be expanded into multiple UI files.");
//					string directoryName = Path.GetDirectoryName(InFile);
                string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(InFile);
                string extension = Path.GetExtension(InFile);
                for (int i = 0; i < fileInfo.Length; i += (int)(spi_file_head_t.file_size + 8))
                {
                    Buffer.BlockCopy(fileDat, i, array, 0, Marshal.SizeOf((object)spi_file_head_t));
                    spi_file_head_t = (spi_file_head_t)BytesToStruct(array, Marshal.SizeOf((object)spi_file_head_t), spi_file_head_t.GetType());
                    if (spi_file_head_t.magic_num != (SPI_FILE_MAGIC_BASE | 0xC))
                    {
                        System.Console.WriteLine("UI error!");
                        break;
                    }
                    ui_head_t ui_head_t = default(ui_head_t);
                    byte[]    array2    = new byte[Marshal.SizeOf((object)ui_head_t)];
                    Buffer.BlockCopy(fileDat, i + 8 + Marshal.SizeOf((object)ui_head_t), array2, 0, Marshal.SizeOf((object)ui_head_t));
                    ui_head_t = (ui_head_t)BytesToStruct(array2, Marshal.SizeOf((object)ui_head_t), ui_head_t.GetType());
                    if (ui_head_t.ui_magic == (1 | UI_BMP_MAGIC_BASE))
                    {
//							string text = directoryName + "\\" + fileNameWithoutExtension + "_" + ui_head_t.x_width + "x" + ui_head_t.y_height + extension;
                        string       text = fileNameWithoutExtension + "_" + ui_head_t.x_width + "x" + ui_head_t.y_height + extension;
                        StreamWriter streamWriter;
                        try
                        {
                            streamWriter = new StreamWriter(text);
                        }
                        catch (Exception)
                        {
                            System.Console.WriteLine("Unable to generate file:" + text);
                            return(ImageNum);
                        }
                        streamWriter.BaseStream.Write(fileDat, i, (int)(spi_file_head_t.file_size + 8));
                        streamWriter.Close();
                        System.Console.WriteLine("Extracted UI:" + text);
                    }
                    ImageNum++;
                }
            }
            else
            {
                System.Console.WriteLine("The file doesn't contain multiple UIs!");
            }
        }
        else
        {
            System.Console.WriteLine("Invalid UI file!");
            return(ImageNum);
        }
        return(ImageNum);
    }