/// <summary> /// Print the object's XML to the XmlWriter. /// </summary> /// <param name="objWriter">XmlTextWriter to write with.</param> /// <param name="objCulture">Culture in which to print.</param> /// <param name="strLanguageToPrint">Language in which to print</param> public void Print(XmlTextWriter objWriter, CultureInfo objCulture, string strLanguageToPrint) { if (!AllowPrint) { return; } objWriter.WriteStartElement("quality"); objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint)); objWriter.WriteElementString("fullname", DisplayName(strLanguageToPrint)); objWriter.WriteElementString("formattedname", FormattedDisplayName(objCulture, strLanguageToPrint)); objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint)); objWriter.WriteElementString("lp", LP.ToString(objCulture)); objWriter.WriteElementString("cost", Cost.ToString(_objCharacter.Options.NuyenFormat, objCulture)); string strLifestyleQualityType = Type.ToString(); if (strLanguageToPrint != GlobalOptions.DefaultLanguage) { XmlNode objNode = XmlManager.Load("lifestyles.xml", strLanguageToPrint).SelectSingleNode("/chummer/categories/category[. = \"" + strLifestyleQualityType + "\"]"); strLifestyleQualityType = objNode?.Attributes?["translate"]?.InnerText ?? strLifestyleQualityType; } objWriter.WriteElementString("lifestylequalitytype", strLifestyleQualityType); objWriter.WriteElementString("lifestylequalitytype_english", Type.ToString()); objWriter.WriteElementString("lifestylequalitysource", OriginSource.ToString()); objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint)); objWriter.WriteElementString("page", Page(strLanguageToPrint)); if (_objCharacter.Options.PrintNotes) { objWriter.WriteElementString("notes", Notes); } objWriter.WriteEndElement(); }
private void Button_Click(object sender, RoutedEventArgs e) { Microsoft.Win32.OpenFileDialog d = new Microsoft.Win32.OpenFileDialog { Filter = "Bitmap Image Files (*.bmp)|*.bmp" }; if ((bool)d.ShowDialog()) { System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(d.FileName); if (bmp.PixelFormat != System.Drawing.Imaging.PixelFormat.Format8bppIndexed) { } else { m_CurrentBitmap = bmp; var data = bmp.LockBits(new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat); OriginSource = BitmapSource.Create(data.Width, data.Height, bmp.HorizontalResolution, bmp.VerticalResolution, PixelFormats.Gray8, null, data.Scan0, data.Stride * data.Height, data.Stride); OriginSource.Freeze(); bmp.UnlockBits(data); } uc.Visibility = Visibility.Visible; } }
//---------------アクション情報取得系------------------- //ハンドルから入力元デバイスの情報を取得する //また入力ソースハンドルを逆引きしてpathにまで戻す。 public OriginSource GetOriginSourceFromInternalHandle(ulong Handle) { ReadyCheck(); //実行可能な状態かチェック EVRInputError inputError = EVRInputError.None; //デバイス情報を取得 InputOriginInfo_t originInfo = new InputOriginInfo_t(); var size = (uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(InputOriginInfo_t)); inputError = vrinput.GetOriginTrackedDeviceInfo(Handle, ref originInfo, size); if (inputError != EVRInputError.None) { return(null); //情報なし } //デバイス情報を作成 OriginSource origin = new OriginSource(originInfo, Handle); //デバイスハンドルから探索して見つかれば格納 foreach (KeyValuePair <string, ulong> p in InputSourceHandles) { if (p.Value == originInfo.devicePath) { origin.DevicePath = p.Key; } } return(origin); }
/// <summary> /// Print the object's XML to the XmlWriter. /// </summary> /// <param name="objWriter">XmlTextWriter to write with.</param> /// <param name="objCulture">Culture in which to print.</param> /// <param name="strLanguageToPrint">Language in which to print</param> public void Print(XmlTextWriter objWriter, CultureInfo objCulture, string strLanguageToPrint) { if (!AllowPrint || objWriter == null) { return; } objWriter.WriteStartElement("quality"); objWriter.WriteElementString("guid", InternalId); objWriter.WriteElementString("sourceid", SourceIDString); objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint)); objWriter.WriteElementString("fullname", DisplayName(strLanguageToPrint)); objWriter.WriteElementString("formattedname", FormattedDisplayName(objCulture, strLanguageToPrint)); objWriter.WriteElementString("extra", _objCharacter.TranslateExtra(Extra, strLanguageToPrint)); objWriter.WriteElementString("lp", LP.ToString(objCulture)); objWriter.WriteElementString("cost", Cost.ToString(_objCharacter.Options.NuyenFormat, objCulture)); var strLifestyleQualityType = Type.ToString(); if (strLanguageToPrint != GlobalOptions.DefaultLanguage) { XPathNavigator objNode = _objCharacter.LoadDataXPath("lifestyles.xml", strLanguageToPrint) .SelectSingleNode("/chummer/categories/category[. = " + strLifestyleQualityType.CleanXPath() + "]"); strLifestyleQualityType = objNode?.SelectSingleNode("@translate")?.Value ?? strLifestyleQualityType; } objWriter.WriteElementString("lifestylequalitytype", strLifestyleQualityType); objWriter.WriteElementString("lifestylequalitytype_english", Type.ToString()); objWriter.WriteElementString("lifestylequalitysource", OriginSource.ToString()); objWriter.WriteElementString("source", _objCharacter.LanguageBookShort(Source, strLanguageToPrint)); objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint)); if (GlobalOptions.PrintNotes) { objWriter.WriteElementString("notes", Notes); } objWriter.WriteEndElement(); }
// 이미지 불러오는 콜백 private void LoadImageBtn_Click(object sender, RoutedEventArgs e) { Microsoft.Win32.OpenFileDialog d = new Microsoft.Win32.OpenFileDialog { Filter = "Bitmap Image Files (*.bmp)|*.bmp" }; if ((bool)d.ShowDialog()) { System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(d.FileName); if (bmp.PixelFormat != System.Drawing.Imaging.PixelFormat.Format8bppIndexed) { MessageBox.Show("It support only Format8bppIndexed."); } else { //현재 이미지에 넣고, m_CurrentBitmap = bmp; var data = bmp.LockBits(new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat); //화면에 출력 OriginSource = BitmapSource.Create(data.Width, data.Height, bmp.HorizontalResolution, bmp.VerticalResolution, PixelFormats.Gray8, null, data.Scan0, data.Stride * data.Height, data.Stride); OriginSource.Freeze(); bmp.UnlockBits(data); //기존 입력이미지는 비우고 if (m_Tool.InputImage != null) { m_Tool.InputImage.Dispose(); } //현재 이미지를 입력이미지로 m_Tool.InputImage = m_CurrentBitmap; } } //메세지 업데이트 this.RaisePropertyChanged(nameof(Overlay)); this.RaisePropertyChanged(nameof(Message)); }
public ActionTransform transform = null; //姿勢 public PoseAction(InputPoseActionData_t Data, OriginSource OriginInfo) { Available = Data.bActive; Origin = OriginInfo; TrackedDevicePose_t Pose = Data.pose; SteamVR_Utils.RigidTransform trans = new SteamVR_Utils.RigidTransform(Pose.mDeviceToAbsoluteTracking); transform = new ActionTransform(); if (OriginInfo != null) { transform.deviceid = OriginInfo.DeviceIndex; } else { transform.deviceid = InvalidDeviceIndex; } //右手系・左手系の変換をした transform.velocity[0] = Pose.vVelocity.v0; transform.velocity[1] = Pose.vVelocity.v1; transform.velocity[2] = -Pose.vVelocity.v2; transform.angularVelocity[0] = -Pose.vAngularVelocity.v0; transform.angularVelocity[1] = -Pose.vAngularVelocity.v1; transform.angularVelocity[2] = Pose.vAngularVelocity.v2; transform.position = trans.pos; transform.rotation = trans.rot; }
private bool PindahkanValidate(object obj) { if (OriginSource.Where(O => O.Selected).Count() > 0) { return(true); } return(false); }
public float UpdateTime = float.NaN; //変化時間 public DigitalAction(InputDigitalActionData_t Data, OriginSource OriginInfo) { Available = Data.bActive; Origin = OriginInfo; State = Data.bState; Changed = Data.bChanged; UpdateTime = Data.fUpdateTime; }
public async void RefreshAll() { await Task.Delay(200); DestinationView.Refresh(); OriginView.Refresh(); TotalDestination = DestinationSource.Sum(O => O.Pcs * O.Weight); TOtalOrigin = OriginSource.Sum(O => O.Pcs * O.Weight); }
private async void LoadData(SMU SMUSelected) { var datas = await context.GetSMUDetail(SMUSelected.Id); foreach (var item in datas) { OriginSource.Add(item); } RefreshAll(); }
private void KembaliAction(object obj) { foreach (var item in DestinationSource.Where(O => O.Selected).ToList()) { var newItem = item.GetClone(); newItem.Selected = false; OriginSource.Add(newItem); DestinationSource.Remove(item); } RefreshAll(); }
public float UpdateTime = float.NaN; //変化時間 public AnalogAction(InputAnalogActionData_t Data, OriginSource OriginInfo) { Available = Data.bActive; Origin = OriginInfo; x = Data.x; y = Data.y; z = Data.z; deltaX = Data.deltaX; deltaY = Data.deltaY; deltaZ = Data.deltaZ; UpdateTime = Data.fUpdateTime; }
/// <summary> /// Save the object's XML to the XmlWriter. /// </summary> /// <param name="objWriter">XmlTextWriter to write with.</param> public void Save(XmlTextWriter objWriter) { if (objWriter == null) { return; } objWriter.WriteStartElement("lifestylequality"); objWriter.WriteElementString("sourceid", SourceIDString); objWriter.WriteElementString("guid", InternalId); objWriter.WriteElementString("name", _strName); objWriter.WriteElementString("category", _strCategory); objWriter.WriteElementString("extra", _strExtra); objWriter.WriteElementString("cost", _strCost); objWriter.WriteElementString("multiplier", _intMultiplier.ToString(GlobalOptions.InvariantCultureInfo)); objWriter.WriteElementString("basemultiplier", _intBaseMultiplier.ToString(GlobalOptions.InvariantCultureInfo)); objWriter.WriteElementString("lp", _intLP.ToString(GlobalOptions.InvariantCultureInfo)); objWriter.WriteElementString("areamaximum", _intAreaMaximum.ToString(GlobalOptions.InvariantCultureInfo)); objWriter.WriteElementString("comfortsmaximum", _intComfortMaximum.ToString(GlobalOptions.InvariantCultureInfo)); objWriter.WriteElementString("securitymaximum", _intSecurityMaximum.ToString(GlobalOptions.InvariantCultureInfo)); objWriter.WriteElementString("area", _intArea.ToString(GlobalOptions.InvariantCultureInfo)); objWriter.WriteElementString("comforts", _intComfort.ToString(GlobalOptions.InvariantCultureInfo)); objWriter.WriteElementString("security", _intSecurity.ToString(GlobalOptions.InvariantCultureInfo)); objWriter.WriteElementString("contributetolimit", _blnContributeToLP.ToString(GlobalOptions.InvariantCultureInfo)); objWriter.WriteElementString("print", _blnPrint.ToString(GlobalOptions.InvariantCultureInfo)); objWriter.WriteElementString("lifestylequalitytype", Type.ToString()); objWriter.WriteElementString("lifestylequalitysource", OriginSource.ToString()); objWriter.WriteElementString("source", _strSource); objWriter.WriteElementString("page", _strPage); objWriter.WriteElementString("allowed", _lstAllowedFreeLifestyles?.Length > 0 ? string.Join(",", _lstAllowedFreeLifestyles) : string.Empty); if (Bonus != null) { objWriter.WriteRaw("<bonus>" + Bonus.InnerXml + "</bonus>"); } else { objWriter.WriteElementString("bonus", string.Empty); } objWriter.WriteElementString("notes", System.Text.RegularExpressions.Regex.Replace(_strNotes, @"[\u0000-\u0008\u000B\u000C\u000E-\u001F]", "")); objWriter.WriteEndElement(); if (OriginSource != QualitySource.BuiltIn) { _objCharacter.SourceProcess(_strSource); } }
private void PindahkanAction(object obj) { try { foreach (var item in OriginSource.Where(O => O.Selected).ToList()) { var newItem = item.GetClone(); newItem.Selected = false; DestinationSource.Add(newItem); OriginSource.Remove(item); } RefreshAll(); } catch (Exception ex) { Helpers.ShowErrorMessage(ex.Message); } }
//originを渡すと、そのコントローラのローカライズされた名前が出る(ゲーム内説明用) public string GetLocalizedButtonNameFromOriginSource(OriginSource origin) { ReadyCheck(); //実行可能な状態かチェック EVRInputError inputError = EVRInputError.None; //取得処理 StringBuilder s = new StringBuilder(); s.Length = 8192; inputError = vrinput.GetOriginLocalizedName(origin.DeviceInternalHandle, s, 8192); if (inputError != EVRInputError.None) { //致命的エラー throw new IOException(inputError.ToString()); } return(s.ToString()); }
//ActionセットとActionを指定すると、それが取得できる元のパスのListを返す public List <OriginSource> GetActionOriginsList(string ActionSetPath, string ActionPath) { ReadyCheck(); //実行可能な状態かチェック EVRInputError inputError = EVRInputError.None; ulong sethandle = GetActionSetHandle(ActionSetPath); //無効なハンドルならthrowされる ulong handle = GetActionHandle(ActionPath); //無効なハンドルならthrowされる //取得処理 ulong[] origins = new ulong[1024]; inputError = vrinput.GetActionOrigins(sethandle, handle, origins); if (inputError == EVRInputError.WrongType) { //姿勢ではない throw new ArgumentException(inputError.ToString()); } if (inputError != EVRInputError.None) { //致命的エラー throw new IOException(inputError.ToString()); } List <OriginSource> list = new List <OriginSource>(); for (int i = 0; i < 1024; i++) { if (origins[i] == OpenVR.k_ulInvalidInputValueHandle) { break; } OriginSource origin = GetOriginSourceFromInternalHandle(origins[i]); if (origin != null) { list.Add(origin); } } return(list); }
/// <summary> /// Print the object's XML to the XmlWriter. /// </summary> /// <param name="objWriter">XmlTextWriter to write with.</param> /// <param name="intRating">Pre-calculated rating of the quality for printing.</param> /// <param name="objCulture">Culture in which to print.</param> /// <param name="strLanguageToPrint">Language in which to print</param> public void Print(XmlTextWriter objWriter, int intRating, CultureInfo objCulture, string strLanguageToPrint) { if (AllowPrint) { string strSpaceCharacter = LanguageManager.GetString("String_Space", strLanguageToPrint); string strRatingString = string.Empty; if (intRating > 1) { strRatingString = strSpaceCharacter + intRating.ToString(objCulture); } string strSourceName = string.Empty; if (!string.IsNullOrWhiteSpace(SourceName)) { strSourceName = strSpaceCharacter + '(' + GetSourceName(strLanguageToPrint) + ')'; } objWriter.WriteStartElement("quality"); objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint)); objWriter.WriteElementString("name_english", Name + strRatingString); objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint) + strRatingString + strSourceName); objWriter.WriteElementString("bp", BP.ToString(objCulture)); string strQualityType = Type.ToString(); if (strLanguageToPrint != GlobalOptions.DefaultLanguage) { strQualityType = XmlManager.Load("qualities.xml", strLanguageToPrint).SelectSingleNode("/chummer/categories/category[. = \"" + strQualityType + "\"]/@translate")?.InnerText ?? strQualityType; } objWriter.WriteElementString("qualitytype", strQualityType); objWriter.WriteElementString("qualitytype_english", Type.ToString()); objWriter.WriteElementString("qualitysource", OriginSource.ToString()); objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint)); objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint)); if (_objCharacter.Options.PrintNotes) { objWriter.WriteElementString("notes", Notes); } objWriter.WriteEndElement(); } }
//Sync the chapter list to the origin source. public bool SyncToOrigin() { SetUpdateProgress(0, 0, UpdateStates.Syncing); if (OriginSource == null) { return(false); } ChapterSource[] menuItems = OriginSource.GetMenuURLs(); if (!File.Exists(GetNovelCoverImageLocation())) { OriginSource.DownloadNovelCoverImage(GetNovelCoverImageLocation()); } if (menuItems == null) { SetUpdateProgress(0, 0, UpdateStates.Error); return(false); } List <Chapter> chapterListing = new List <Chapter>(); int updateCount = 0; for (int i = 0; i < menuItems.Length; i++) { try { //add new chapter if url does not exist in database if (!OriginSource.ChapterUrls.Where(originUrl => originUrl.Hash == menuItems[i].UrlHash).Any()) { Chapter newChapter = new Chapter(); newChapter.ChapterTitle = menuItems[i].Title; newChapter.NovelTitle = NovelTitle; newChapter.Read = false; newChapter.Index = i; newChapter.Novel = this; newChapter.Valid = true; newChapter.HashID = menuItems[i].UrlHash.ToString("X"); NovelLibrary.libraryData.Chapters.InsertOnSubmit(newChapter); NovelLibrary.libraryData.SubmitChanges(); //chapterList.Insert(i, newChapter); chapterListing.Add(newChapter); isDirty = true; updateCount++; ChapterUrl newChapterUrl = new ChapterUrl(); newChapterUrl.ChapterID = newChapter.ID; newChapterUrl.Url = menuItems[i].Url; newChapterUrl.Hash = menuItems[i].UrlHash; newChapterUrl.Vip = menuItems[i].Vip; newChapterUrl.SourceID = OriginSource.ID; newChapterUrl.Source = OriginSource; newChapterUrl.Chapter = newChapter; NovelLibrary.libraryData.ChapterUrls.InsertOnSubmit(newChapterUrl); NovelLibrary.libraryData.SubmitChanges(); } //chapter already exist within database. else { Chapter c = (from chapterUrl in OriginSource.ChapterUrls where chapterUrl.Url == menuItems[i].Url select chapterUrl.Chapter).First <Chapter>(); if (c.ChapterTitle != menuItems[i].Title) { c.ChapterTitle = menuItems[i].Title; } if (c.Index != i) { c.Index = i; } chapterListing.Add(c); } } catch (Exception e) { Console.WriteLine(e); return(false); } } chapterList.SyncBindingToConstrain(); //Remove chapter that no longer belong in the list. HashSet <int> includedID = new HashSet <int>(chapterListing.Select(c => c.ID)); Chapter[] allChapters = Chapters.ToArray(); for (int i = 0; i < allChapters.Count(); i++) { if (!includedID.Contains(allChapters[i].ID)) { Console.WriteLine("Deleting " + allChapters[i].ChapterTitle + " " + allChapters[i].ID); DeleteChapter(allChapters[i], false, false); } } RefreshCacheData(); if (updateCount == 0) { SetUpdateProgress(0, 0, UpdateStates.UpToDate); } else { SetUpdateProgress(updateCount, 0, UpdateStates.UpdateAvailable); } return(true); }