public void SerializeParameters(UIElementCollection parameterGrid, string shaderName)
        {
            ShaderName = shaderName;

            ClearLists();

            foreach (var p in parameterGrid)
            {
                if (p is BoolView)
                {
                    var vm = (p as BoolView).DataContext as BoolViewModel;
                    BoolList.Add(new SerializeHolder <bool>(vm.ShaderName, vm.ContentValue));
                }
                else if (p is IntView)
                {
                    var vm = (p as IntView).DataContext as IntViewModel;
                    IntList.Add(new SerializeHolder <int>(vm.ShaderName, vm.ContentValue));
                }
                else if (p is FloatView)
                {
                    var vm = (p as FloatView).DataContext as FloatViewModel;
                    FloatList.Add(new SerializeHolder <float>(vm.ShaderName, vm.ContentValue));
                }
                else if (p is Float2View)
                {
                    var vm = (p as Float2View).DataContext as Float2ViewModel;
                    Float2List.Add(new SerializeHolder <Float2>(vm.ShaderName, vm.ContentValue));
                }
                else if (p is Float3View)
                {
                    var vm = (p as Float3View).DataContext as Float3ViewModel;
                    Float3List.Add(new SerializeHolder <Float3>(vm.ShaderName, vm.ContentValue));
                }
                else if (p is Float4View)
                {
                    var vm = (p as Float4View).DataContext as Float4ViewModel;
                    Float4List.Add(new SerializeHolder <Float4>(vm.ShaderName, vm.ContentValue));
                }
                else if (p is Texture2DView)
                {
                    var vm = (p as Texture2DView).DataContext as Texture2DViewModel;
                    Texture2DList.Add(new SerializeHolder <string>(vm.ShaderName, vm.FileName));
                }
            }

            var    ofd           = new SaveFileDialog();
            string baseDirectory = System.AppDomain.CurrentDomain.BaseDirectory;

            ofd.InitialDirectory = baseDirectory;
            ofd.DefaultExt       = ".xml";
            ofd.Filter           = "XML files (.xml)|*.xml";
            if (ofd.ShowDialog() == true)
            {
                using (var f = File.Create(ofd.FileName))
                {
                    XmlSer.Serialize(f, this);
                }
            }
        }
예제 #2
0
 private void ClearFields()
 {
     IntArrayProp = new int[2];
     ComplexProp  = new ComplexClass1();
     CheckBox     = false;
     Lines        = new string[0];
     StringProp   = "";
     CompList.Clear(); CompList.Add(new ComplexClass2(4, 5)); CompList.Add(null); CompList.Add(new ComplexClass2(6, 7));
     BoolList.Clear(); BoolList.Add(true); BoolList.Add(false); BoolList.Add(true);
     SetDebugDisplays();
 }
예제 #3
0
        public static BoolList ConvertBoolList(string vec)
        {
            BoolList list = new BoolList();

            try {
                string[] resut = vec.Split(s_ListSplitString, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < resut.Length; ++i)
                {
                    string str = resut[i];
                    if (str == "true" || str.Length > 0 && char.IsNumber(str[0]) && int.Parse(str) != 0)
                    {
                        list.Add(true);
                    }
                    else
                    {
                        list.Add(false);
                    }
                }
                return(list);
            } catch (System.Exception ex) {
                LogSystem.Error("ConvertBoolList {0} Exception:{1}/{2}", vec, ex.Message, ex.StackTrace);
                throw;
            }
        }
예제 #4
0
    public void Load(ZipData zip)
    {
        var code = new BoolList();
        var info = new InfoSource();

        this.path = zip.path;

        for (int i = 0; i < zip.data.Length; i++)
        {
            code.Add(zip.data[i]);

            if (zip.Codes.ContainsKey(code))
            {
                // 一部分複合する.瞬時符号って最高
                info.AddRange(zip.Codes[code]);

                code.Clear();
            }
        }

        this.byteArray = new byte[zip.byteNumber];
        var temp = info.ToByteArray();

        for (int i = 0; i < this.byteArray.Length; i++)
        {
            byteArray[i] = temp[i];
        }

        /*
         * for(int i = 0 ; i < byteArray.Length ; i++ )
         * {
         *  byte b = 0x00;
         *  for(int j = 0 ; j < 8 ; j++ ){
         *      b <<= 1;
         *      b |= info[ i * 8 + j ] ? (byte)0x01 : (byte)0x00;
         *  }
         *  byteArray[i] = b;
         * }*/
    }
예제 #5
0
    public void Load(PngData png)
    {
        var bytelist = new List <byte>(png.originalData.ToByteArray());
        var index    = 0;

        byte[] temp_byte;

        temp_byte = bytelist.GetRange(index, 4).ToArray();
        index    += 4;
        if (temp_byte[0] != (byte)'P')
        {
            throw new Exception("P is error");
        }
        if (temp_byte[1] != (byte)'D')
        {
            throw new Exception("D is error");
        }
        if (temp_byte[2] != (byte)'C')
        {
            throw new Exception("C is error");
        }
        if (temp_byte[3] != (byte)'A')
        {
            throw new Exception("A is error");
        }

        temp_byte = bytelist.GetRange(index, 4).ToArray();
        index    += 4;
        if (BitConverter.ToInt32(temp_byte, 0) != 1)
        {
            throw new Exception("zip type error");
        }

        temp_byte = bytelist.GetRange(index, 4).ToArray();
        index    += 4;
        if (ZipData.n_byte != BitConverter.ToInt32(temp_byte, 0))
        {
            throw new Exception("n_byte is error");
        }

        // 元のファイルの文字列の長さ 4byte
        temp_byte = bytelist.GetRange(index, 4).ToArray();
        index    += 4;
        int path_bytes_Length = BitConverter.ToInt32(temp_byte, 0);


        // 元のファイルの文字列データ path_bytes_Length byte
        this.path = Encoding.UTF8.GetString(bytelist.GetRange(index, path_bytes_Length).ToArray());
        index    += path_bytes_Length;

        temp_byte = bytelist.GetRange(index, 4).ToArray();
        index    += 4;
        int Code_Count = BitConverter.ToInt32(temp_byte, 0);

        temp_byte       = bytelist.GetRange(index, 4).ToArray();
        index          += 4;
        this.byteNumber = BitConverter.ToInt32(temp_byte, 0);

        this.Codes         = new Dictionary <BoolList, InfoSource>();
        this.InvertedCodes = new Dictionary <InfoSource, BoolList>();

        for (int i = 0; i < Code_Count; i++)
        {
            temp_byte = bytelist.GetRange(index, ZipData.n_byte).ToArray();
            index    += ZipData.n_byte;

            var element = new InfoSource(temp_byte);

            temp_byte = bytelist.GetRange(index, 4).ToArray();
            index    += 4;

            var code_length      = BitConverter.ToInt32(temp_byte, 0);
            var code_byte_length = code_length / 8 + (code_length % 8 == 0?0:1);

            temp_byte = bytelist.GetRange(index, code_byte_length).ToArray();
            index    += code_byte_length;

            var boollist_temp = new BoolList(temp_byte);
            var code          = new BoolList();
            for (int j = 0; j < code_length; j++)
            {
                code.Add(boollist_temp[j]);
            }

            this.Codes[code]            = element;
            this.InvertedCodes[element] = code;
        }

        temp_byte = bytelist.GetRange(index, 4).ToArray();
        index    += 4;
        int dataLength = BitConverter.ToInt32(temp_byte, 0);

        temp_byte = bytelist.GetRange(index, dataLength / 8 + (dataLength % 8 == 0?0:1)).ToArray();
        index    += dataLength / 8 + (dataLength % 8 == 0?0:1);

        var data_temp = new BoolList(temp_byte);

        this.data = new BoolList();
        for (int i = 0; i < dataLength; i++)
        {
            this.data.Add(data_temp[i]);
        }
    }