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; }
private void CheckboxOutFileNameUseDefault_Unchecked(object sender, RoutedEventArgs e) { ConvertArgs arg = listboxSelectedFile.SelectedItem as ConvertArgs; arg.IsDefaultOutputFileName = false; tbOutFileName.IsEnabled = true; }
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; }
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; }
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); }
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; }
private void CheckboxSaveToUseDefault_Unchecked(object sender, RoutedEventArgs e) { ConvertArgs arg = listboxSelectedFile.SelectedItem as ConvertArgs; arg.IsDefaultSaveTo = false; tbSaveTo.IsEnabled = true; btnSelectOutPath.IsEnabled = true; }
private void CheckboxEncodingUseDefault_Checked(object sender, RoutedEventArgs e) { ConvertArgs arg = listboxSelectedFile.SelectedItem as ConvertArgs; arg.DefaultEncoding(); comboboxEncodings.IsEnabled = false; comboboxEncodings.SelectedItem = arg.Encoding.ToLower(); }
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; }
public bool TryConvert(ConvertArgs args) { if (args.DestinationType.IsClass) { args.ConvertedObject = null; return true; } args.ConvertedObject = null; return true; }
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); }
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; }
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; }
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; }
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; }
public ConvertProgressArgs(ConvertArgs aArgs, int w, int h) { args = aArgs; imageW = w; imageH = h; }
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); }