示例#1
0
        public bool TryConvert(ConvertArgs args)
        {
            if (!args.DestinationType.IsArray)
            {
                return false;
            }
            if (args.Reader.Value == null)
            {
                args.ConvertedObject = null;
                return true;
            }

            ArrayList arrayList = new ArrayList();
            var elementType = args.DestinationType.GetElementType();
            var enumerableItems = args.Reader.Value as IEnumerable;
            if (enumerableItems == null)
            {
                return true;
            }
            foreach (var obj in enumerableItems)
            {
                Type toElementType = args.Converter.GetDestinationType(obj, elementType);
                var dstObject = args.Converter.MapObject(obj, toElementType);
                arrayList.Add(dstObject);
            }
            var array = (Array)Activator.CreateInstance(args.DestinationType, new object[] { arrayList.Count });
            arrayList.CopyTo(array);
            args.ConvertedObject = array;
            return true;
        }
示例#2
0
        private void CheckboxOutFileNameUseDefault_Unchecked(object sender, RoutedEventArgs e)
        {
            ConvertArgs arg = listboxSelectedFile.SelectedItem as ConvertArgs;

            arg.IsDefaultOutputFileName = false;
            tbOutFileName.IsEnabled     = true;
        }
示例#3
0
        public bool TryConvert(ConvertArgs args)
        {
            if (!args.DestinationType.IsClass)
            {
                return false;
            }
            if (args.ConvertedObject == null)
            {
                args.ConvertedObject = args.Converter.CreateInstance(args.Reader, args.DestinationType);
            }
            var typeConversion = TypeConversion.GetTypeConversion(args.ConvertedObject.GetType());
            var accessor = EntityAccessor.GetAccessor(args.ConvertedObject.GetType());
            foreach (var propertyConversion in typeConversion.Properties)
            {
                var propertyName = propertyConversion.PropertyInfo.Name;

                if (!accessor.HasPropertySetter(propertyName))
                {
                    continue;
                }

                object propertyValue = args.Converter.GetValue(args.Reader, propertyName);
                if (propertyValue != ObjectConverter.PropertyNotExisting)
                {
                    var value = args.Converter.MapObject(propertyValue, propertyConversion.PropertyInfo.PropertyType);
                    accessor.SetProperty(args.ConvertedObject, propertyName, value);
                }
            }
            return true;
        }
示例#4
0
        private void BtnSelectFile_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog fileDialog = new OpenFileDialog();

            fileDialog.Multiselect = true;
            fileDialog.Filter      = "Text files|*.txt|Log Files|*.log|All Files|*.*";
            fileDialog.DefaultExt  = ".txt";
            var dialogOk = fileDialog.ShowDialog();

            if (dialogOk == true)
            {
                StringBuilder allFiles = new StringBuilder(String.Empty);

                foreach (String name in fileDialog.FileNames)
                {
                    var arg = new ConvertArgs(name);
                    if (!listboxSelectedFile.Items.Contains(arg))
                    {
                        listboxSelectedFile.Items.Add(arg);
                    }
                }
            }

            if (!listboxSelectedFile.Items.IsEmpty)
            {
                gridSelectedItemInfo.IsEnabled   = true;
                listboxSelectedFile.SelectedItem = listboxSelectedFile.Items[0];
            }
        }
        public bool TryConvert(ConvertArgs args)
        {
            var di = args.Reader.Value as IDictionary<string, object>;

            Type diType = args.DestinationType;
            if (di != null)
            {
                string xtype = di.GetValue(_typeName, (string)null);
                if (xtype != null)
                {
                    diType = _typeResolvor.ResolveType(xtype);

                    if (diType == null)
                    {
                        diType = args.DestinationType;
                    }
                    else
                    {
                        if (diType != args.DestinationType && !args.DestinationType.IsAssignableFrom(diType))
                        {
                            return false;
                        }
                    }
                    args.ConvertedObject = args.Converter.CreateInstance(args.Reader, diType);
                }
                return false;
            }
            return false;
        }
示例#6
0
        private void convertButton_Click(object sender, EventArgs e)
        {
            if (!Directory.Exists(saveFolderTextBox.Text))
            {
                MessageBox.Show("保存場所のフォルダーが存在しません。正しく入力しなおしてください。", "入力エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (!Directory.Exists(janeFolderTextBox.Text))
            {
                MessageBox.Show("Janeのフォルダーが存在しません。正しく入力しなおしてください。", "入力エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            Jane2ch jane = new Jane2ch(janeFolderTextBox.Text);
            option.SaveFolder = saveFolderTextBox.Text;
            ConvertArgs args = new ConvertArgs(jane, option);

            //別ウインドにしたほうがきれい
            convertButton.Enabled = false;
            progressBar1.Visible = true;
            janeFolderButton.Enabled = false;
            saveFolderButton.Enabled = false;

            backgroundWorker.RunWorkerAsync(args);
        }
示例#7
0
        private void CheckboxEncodingUseDefault_Unchecked(object sender, RoutedEventArgs e)
        {
            ConvertArgs arg = listboxSelectedFile.SelectedItem as ConvertArgs;

            arg.IsDefaultEncoding       = false;
            comboboxEncodings.IsEnabled = true;
        }
 public bool TryConvert(ConvertArgs args)
 {
     var dictInterface = args.DestinationType.ExtractGenericInterface(typeof(IDictionary<,>));
     if (dictInterface != null)
     {
         if (args.ConvertedObject == null)
         {
             var dictType = typeof(Dictionary<,>).MakeGenericType(dictInterface.GenericTypeArguments);
             args.ConvertedObject = args.Converter.CreateInstance(args.Reader, dictType);
         }
         var dict = args.ConvertedObject as IDictionary;
         if (dict == null)
         {
             return false;
         }
         foreach (var property in args.Reader.Properties)
         {
             var value = args.Converter.GetValue(args.Reader, property);
             if (value != null)
                 dict.Add(property, args.Converter.MapObject(value, value.GetType()));
             else
                 dict.Add(property, null);
         }
         return true;
     }
     return false;
 }
示例#9
0
        private void CheckboxSaveToUseDefault_Unchecked(object sender, RoutedEventArgs e)
        {
            ConvertArgs arg = listboxSelectedFile.SelectedItem as ConvertArgs;

            arg.IsDefaultSaveTo        = false;
            tbSaveTo.IsEnabled         = true;
            btnSelectOutPath.IsEnabled = true;
        }
示例#10
0
        private void CheckboxEncodingUseDefault_Checked(object sender, RoutedEventArgs e)
        {
            ConvertArgs arg = listboxSelectedFile.SelectedItem as ConvertArgs;

            arg.DefaultEncoding();
            comboboxEncodings.IsEnabled    = false;
            comboboxEncodings.SelectedItem = arg.Encoding.ToLower();
        }
示例#11
0
        private void ListBoxSelectedItem_Click(object sender, RoutedEventArgs e)
        {
            ConvertArgs arg = listboxSelectedFile.SelectedItem as ConvertArgs;

            labelSelectedItemName.Content  = arg.ToString();
            comboboxEncodings.SelectedItem = arg.Encoding.ToLower();
            tbOutFileName.Text             = arg.OutputFileName;
            tbSaveTo.Text = arg.SaveTo;
        }
示例#12
0
 public bool TryConvert(ConvertArgs args)
 {
     if (args.DestinationType.IsClass)
     {
         args.ConvertedObject = null;
         return true;
     }
     args.ConvertedObject = null;
     return true;
 }
示例#13
0
        public int Convert(ConvertArgs ca, EventCallback cb)
        {
            //Console.WriteLine("Converting {0} {1} {2}x", ca.mInPath, ca.mOutPath, ca.mSampleRateScale);

            mCB = cb;

            int hr = Convert1(ca);

            mCB = null;
            return(hr);
        }
示例#14
0
 public bool TryConvert(ConvertArgs args)
 {
     if (args.DestinationType != typeof(string))
     {
         return false;
     }
     if (args.Reader.Value == null)
     {
         args.ConvertedObject = null;
         return true;
     }
     args.ConvertedObject = Convert.ToString(args.Reader.Value);
     return true;
 }
示例#15
0
 public bool TryConvert(ConvertArgs args)
 {
     var propertyType = args.DestinationType;
     if (propertyType.IsEnum ||
            (propertyType.IsGenericType && propertyType.GetGenericTypeDefinition() == typeof(Nullable<>) && propertyType.GetGenericArguments()[0].IsEnum))
     {
         if (args.Reader.Value != null)
         {
             var s = args.Reader.Value as string;
             if (!string.IsNullOrWhiteSpace(s))
             {
                 args.ConvertedObject = Enum.Parse(propertyType, s, true);
                 return true;
             }
             args.ConvertedObject = Convert.ToInt32(args.Reader.Value);
             return true;
         }
     }
     return false;
 }
示例#16
0
        private void ListboxSelectedFiels_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ConvertArgs arg = listboxSelectedFile.SelectedItem as ConvertArgs;

            if (arg == null)
            {
                if (listboxSelectedFile.Items.Count > 0)
                {
                    listboxSelectedFile.SelectedItem = listboxSelectedFile.Items[0];
                }
                return;
            }
            labelSelectedItemName.Content  = arg.ToString();
            comboboxEncodings.SelectedItem = arg.Encoding.ToLower();;
            tbOutFileName.Text             = arg.OutputFileName;
            tbSaveTo.Text = arg.SaveTo;

            cbEncodingUseDefault.IsChecked    = arg.IsDefaultEncoding;
            cbOutFileNameUseDefault.IsChecked = arg.IsDefaultOutputFileName;
            cbSaveToUseDefault.IsChecked      = arg.IsDefaultSaveTo;
        }
示例#17
0
        public bool TryConvert(ConvertArgs args)
        {
            if (!CacheElementType(args.DestinationType))
            {
                return false;
            }
            var enumerableItems = args.Reader.Value as IEnumerable;
            if (enumerableItems == null)
            {
                return false;
            }
            IList list = (IList)Activator.CreateInstance(args.DestinationType);

            var elementType = _type2ElementType[args.DestinationType];
            foreach (var obj in enumerableItems)
            {
                Type toElementType = args.Converter.GetDestinationType(obj, elementType);
                var dstObject = args.Converter.MapObject(obj, toElementType);
                list.Add(dstObject);
            }

            args.ConvertedObject = list;
            return true;
        }
示例#18
0
 public ConvertProgressArgs(ConvertArgs aArgs, int w, int h)
 {
     args   = aArgs;
     imageW = w;
     imageH = h;
 }
示例#19
0
        private int Convert1(ConvertArgs ca)
        {
            int hr = 0;

            CallEvent(EventCallbackTypes.Started, PROGRESS_STARTED, hr);

            hr = mResampleGpu.ChooseAdapter(ca.mGpuId);
            if (hr < 0)
            {
                CallEvent(EventCallbackTypes.InitGpuAdapterFailed, 0, hr);
                return(hr);
            }

            var flacR = new FlacRW();

            hr = flacR.DecodeAll(ca.mInPath);
            if (hr < 0)
            {
                CallEvent(EventCallbackTypes.ReadFailed, 0, hr);
                return(hr);
            }
            else
            {
                CallEvent(EventCallbackTypes.ReadCompleted, PROGRESS_READ_END, hr);
            }

            Metadata metaR;

            flacR.GetDecodedMetadata(out metaR);

            var inPcmOfCh = new List <float[]>();

            for (int ch = 0; ch < metaR.channels; ++ch)
            {
                var pcm = new LargeArray <byte>(metaR.BytesPerSample * metaR.totalSamples);

                int fragmentSamples = 1024 * 1024;
                for (long posSamples = 0; posSamples < metaR.totalSamples; posSamples += fragmentSamples)
                {
                    int copySamples = fragmentSamples;
                    if ((metaR.totalSamples - posSamples) < copySamples)
                    {
                        copySamples = (int)(metaR.totalSamples - posSamples);
                    }
                    var b = new byte[metaR.BytesPerSample * copySamples];
                    flacR.GetPcmOfChannel(ch, posSamples, ref b, copySamples);
                    pcm.CopyFrom(b, 0,
                                 metaR.BytesPerSample * posSamples, metaR.BytesPerSample * copySamples);
                }

                var pcmData = new PcmData();
                pcmData.SetFormat(1, metaR.bitsPerSample, metaR.bitsPerSample,
                                  metaR.sampleRate, PcmData.ValueRepresentationType.SInt,
                                  metaR.totalSamples);
                pcmData.SetSampleLargeArray(pcm);

                var fb = new float[metaR.totalSamples];
                for (long i = 0; i < metaR.totalSamples; ++i)
                {
                    fb[i] = pcmData.GetSampleValueInFloat(0, i);
                }
                pcmData = null;
                pcm     = null;

                inPcmOfCh.Add(fb);
            }

            {
                CallEvent(EventCallbackTypes.PrepareDataCompleted, PROGRESS_PREPARE_END, hr);
            }


            System.Diagnostics.Debug.Assert(0.5 <= ca.mSampleRateScale & ca.mSampleRateScale <= 2.0);
            int sampleRateTo  = (int)(ca.mSampleRateScale * metaR.sampleRate);
            int sampleTotalTo = (int)(ca.mSampleRateScale * metaR.totalSamples);

            // metaW: 出力フォーマット。
            var metaW = new Metadata(metaR);

            if (ca.mSampleRateScale < 1.0)
            {
                // 曲の長さを縮めると、エイリアシング雑音が出るのでローパスフィルターが必要になる。
                // 出力サンプルレートを倍にしてローパスフィルターを省略。
                sampleRateTo  = (int)(2.0 * ca.mSampleRateScale * metaR.sampleRate);
                sampleTotalTo = (int)(2.0 * ca.mSampleRateScale * metaR.totalSamples);

                metaW.sampleRate *= 2;
            }

            metaW.bitsPerSample = 24;
            metaW.totalSamples  = sampleTotalTo;

            // ローパスフィルターが不要になる条件。
            System.Diagnostics.Debug.Assert(metaR.sampleRate <= metaW.sampleRate);

            var outPcmOfCh = new List <float[]>();

            for (int ch = 0; ch < metaR.channels; ++ch)
            {
                var inPcm = inPcmOfCh[ch];
                mResampleGpu.Setup(SINC_CONVOLUTION_N, inPcm,
                                   (int)metaR.totalSamples, metaR.sampleRate, sampleRateTo, sampleTotalTo);
                for (int i = 0; i < sampleTotalTo; i += GPU_WORK_COUNT)
                {
                    // 出力サンプル数countの調整。
                    int count = GPU_WORK_COUNT;
                    if (sampleTotalTo < i + count)
                    {
                        count = sampleTotalTo - i;
                    }

                    hr = mResampleGpu.Dispatch(i, count);
                    if (hr < 0)
                    {
                        CallEvent(EventCallbackTypes.ConvertFailed, 0, hr);
                        return(hr);
                    }
                    else
                    {
                        float progress0to1 = ((float)ch / metaR.channels)
                                             + (1.0f / metaR.channels) * ((float)i / sampleTotalTo);
                        int percent = (int)(PROGRESS_CONV_START +
                                            progress0to1 * (PROGRESS_CONV_END - PROGRESS_CONV_START));
                        CallEvent(EventCallbackTypes.ConvProgress, percent, hr);
                    }
                }

                var outPcm = new float[sampleTotalTo];
                mResampleGpu.ResultGetFromGpuMemory(outPcm);
                outPcmOfCh.Add(outPcm);

                mResampleGpu.Unsetup();
            }

            CallEvent(EventCallbackTypes.WriteStarted, PROGRESS_CONV_END, hr);

            var flacW = new FlacRW();

            hr = flacW.EncodeInit(metaW);
            if (hr < 0)
            {
                CallEvent(EventCallbackTypes.WriteFailed, 0, hr);
                return(hr);
            }

            if (0 < metaR.pictureBytes)
            {
                // 画像。
                byte[] metaPicture = null;
                flacR.GetDecodedPicture(out metaPicture, metaR.pictureBytes);
                hr = flacW.EncodeSetPicture(metaPicture);
                if (hr < 0)
                {
                    CallEvent(EventCallbackTypes.WriteFailed, 0, hr);
                    return(hr);
                }
            }


            for (int ch = 0; ch < metaW.channels; ++ch)
            {
                // 24bitのbyteAry作成。
                var floatAry = outPcmOfCh[ch];
                var byteAry  = new LargeArray <byte>(3 * metaW.totalSamples); //< 24bitなので1サンプルあたり3バイト。
                for (long i = 0; i < metaW.totalSamples; ++i)
                {
                    var b = PcmDataUtil.ConvertTo24bitLE(floatAry[i]);
                    byteAry.CopyFrom(b, 0, i * 3, 3);
                }

                flacW.EncodeAddPcm(ch, byteAry);
            }

            hr = flacW.EncodeRun(ca.mOutPath);
            if (hr < 0)
            {
                CallEvent(EventCallbackTypes.WriteFailed, 0, hr);
                return(hr);
            }

            flacW.EncodeEnd();
            flacR.DecodeEnd();

            return(hr);
        }