public IActionResult UpdateSegment([FromBody] Segment segment) { if (segment == null) { return(Ok(new APIResponse() { status = APIStatus.FAIL.ToString(), response = $"{nameof(segment)} cannot be null" })); } try { if (segment == null) { return(BadRequest($"{nameof(segment)} cannot be null")); } var result = SegmentHelper.UpdateSegment(segment); if (result != null) { return(Ok(new APIResponse() { status = APIStatus.PASS.ToString(), response = result })); } return(Ok(new APIResponse() { status = APIStatus.FAIL.ToString(), response = "Registration Failed." })); } catch (Exception ex) { return(Ok(new APIResponse() { status = APIStatus.FAIL.ToString(), response = ex.Message })); } }
public override IEnumerable <PSObject> GetItems(Segment segment) { segment.GetProvider().WriteDebug("DriveItems.Projects.Git.Items.GetItems(Segment)"); GitHttpClient httpClient = this.GetHttpClient(segment) as GitHttpClient; return(this.Wrap( segment, () => { GitVersionDescriptor versionDescriptor = new GitVersionDescriptor(); versionDescriptor.Version = SegmentHelper.GetBranchName(segment); versionDescriptor.VersionType = GitVersionType.Branch; return httpClient .GetItemsAsync( project: SegmentHelper.GetProjectName(segment), repositoryId: SegmentHelper.GetRepoName(segment), recursionLevel: VersionControlRecursionType.Full, versionDescriptor: versionDescriptor) .Result .Select(x => this.ConvertToChildDriveItem(segment, x)) .ToArray(); })); }
/// <summary> /// 秀图 消息段 /// </summary> /// <param name="data">图片名/绝对路径/URL/base64</param> /// <param name="useCache">通过URL发送时有效,是否使用已缓存的文件</param> /// <param name="threadCount">通过URL发送时有效,通过网络下载图片时的线程数,默认单线程</param> /// <param name="id">秀图特效id,默认为40000</param> public static SoraSegment ShowImage(string data, int id = 40000, bool useCache = true, int?threadCount = null) { if (string.IsNullOrEmpty(data)) { throw new NullReferenceException(nameof(data)); } (string dataStr, bool isDataStr) = SegmentHelper.ParseDataStr(data); if (!isDataStr) { Log.Error("SoraSegment|ShowImage", $"非法数据字符串({data}),已忽略消息段"); return(IllegalSegment()); } return(new SoraSegment(SegmentType.Image, new ImageSegment { ImgFile = dataStr, ImgType = "show", UseCache = useCache ? 1 : null, Id = id, ThreadCount = threadCount })); }
public override void ProcessParagraphUnit(IParagraphUnit paragraphUnit) { ISegment sourceSegment; string sourceText; ISegment targetSegment; string targetText; List <IndexData> targetLContent; SegmentData segmentSearch; ConfirmationLevel itemStatus; if (paragraphUnit.IsStructure) { base.ProcessParagraphUnit(paragraphUnit); return; } foreach (ISegmentPair item in paragraphUnit.SegmentPairs) { sourceSegment = item.Source; targetSegment = item.Target; itemStatus = item.Properties.ConfirmationLevel; if (_searcher.checkSegment(item.Properties.IsLocked, itemStatus)) { _dataExtractor.Process(targetSegment); targetText = _dataExtractor.PlainText.ToString(); targetLContent = _dataExtractor.LockedContent; if (targetText.Length > 0) { // do search & save found results _searcher.SearchInSegment(targetText, targetLContent); // if matches in target were found if (SegmentHelper.ContainMatches(_searcher.resultsInText)) { #region extract source text _dataExtractor.Process(sourceSegment); sourceText = _dataExtractor.PlainText.ToString(); #endregion CollectResults(item.Properties.Id.Id, sourceText, itemStatus, sourceSegment, null, true); CollectResults(item.Properties.Id.Id, targetText, itemStatus, targetSegment, _searcher.resultsInText, false); segmentSearch = _resultTrg[_resultTrg.Count - 1]; ISegment originalSegment = (ISegment)targetSegment.Clone(); // unlock selections if (_searchSettings.UnlockContent) { StatusUpdateHelper.UnlockContent(targetSegment, ItemFactory, PropertiesFactory); } #region REPLACE Logic int textLoc = 0; int cnt = 0; int status = 0; for (int i = segmentSearch.SearchResults.Count - 1; i >= 0; i--) { // add warning - cannot be replaced if (segmentSearch.SearchResults[i].IsIndexOverlap) { status = -4; _resultWarnings.Add(new WarningData(segmentSearch.Sid, segmentSearch.SearchResults[i], WarningData.WarningType.IndexOverlap)); } else { // DO REPLACE - success status = PerformReplace(targetSegment, segmentSearch.SearchResults[i], ref textLoc); #region report warning - fail if (status != 0) { if (status == -1) { _resultWarnings.Add(new WarningData(segmentSearch.Sid, segmentSearch.SearchResults[i], WarningData.WarningType.TagFound, segmentSearch.SearchResults[i].Length + textLoc)); } else if (status == -2) { _resultWarnings.Add(new WarningData(segmentSearch.Sid, segmentSearch.SearchResults[i], WarningData.WarningType.ContainLContent, segmentSearch.SearchResults[i].Length + textLoc)); } else if (status == -3) { _resultWarnings.Add(new WarningData(segmentSearch.Sid, segmentSearch.SearchResults[i], WarningData.WarningType.ContainComment, segmentSearch.SearchResults[i].Length + textLoc)); } else { _resultWarnings.Add(new WarningData(segmentSearch.Sid, segmentSearch.SearchResults[i], WarningData.WarningType.Other)); } } #endregion } if (i == segmentSearch.SearchResults.Count - 1) { // collect results _resultReplace.Add(new SegmentData(_resultReplace.Count, segmentSearch.SegmentId, segmentSearch.SegmentText, segmentSearch.SegmentStatus, segmentSearch.SegmentContent)); _resultReplace[_resultReplace.Count - 1].SearchResults = new List <IndexData>(); } // if replace was successful if (status == 0) { _resultReplace[_resultReplace.Count - 1].SearchResults.Add(segmentSearch.SearchResults[i]); _resultReplace[_resultReplace.Count - 1].SearchResults[cnt++].RealStartIndex = textLoc; } } #endregion #region UPDATE STATUSES Logic // if replace occured if (_resultReplace[_resultReplace.Count - 1].IndexMatchesCount > 0) { // update segment properties StatusUpdateHelper.UpdateSegmentProperties(item, _searchSettings); } else { item.Target.Clear(); originalSegment.MoveAllItemsTo(item.Target); } #endregion } } } } base.ProcessParagraphUnit(paragraphUnit); }
public override void ProcessParagraphUnit(IParagraphUnit paragraphUnit) { ISegment sourceSegment; string sourceText; List <TagData> sourceTags; List <IndexData> sourceLContent; List <IndexData> sourceResult; ISegment targetSegment; string targetText; List <TagData> targetTags; List <IndexData> targetLContent; List <IndexData> targetResult; ConfirmationLevel itemStatus; if (!paragraphUnit.IsStructure) { foreach (ISegmentPair item in paragraphUnit.SegmentPairs) { itemStatus = item.Properties.ConfirmationLevel; sourceTags = null; sourceResult = null; targetTags = null; targetResult = null; // extract text and tags from Segment sourceSegment = item.Source; _dataExtractor.Process(sourceSegment); sourceTags = _dataExtractor.Tags; sourceText = _dataExtractor.PlainText.ToString(); sourceLContent = _dataExtractor.LockedContent; targetSegment = item.Target; _dataExtractor.Process(targetSegment); targetText = _dataExtractor.PlainText.ToString(); targetTags = _dataExtractor.Tags; targetLContent = _dataExtractor.LockedContent; // perform search if (_searcher.checkSegment(item.Properties.IsLocked, item.Properties.ConfirmationLevel)) { if (_searchSettings.SearchInSource && (sourceText.Length > 0 || sourceTags.Count > 0)) { _searcher.SearchInSegment(sourceText, sourceTags, sourceLContent); sourceResult = _searcher.resultsInText; sourceTags = _searcher.resultsInTags; } if (_searchSettings.SearchInTarget && (targetText.Length > 0 || targetTags.Count > 0)) { _searcher.SearchInSegment(targetText, targetTags, targetLContent); targetResult = _searcher.resultsInText; targetTags = _searcher.resultsInTags; } // collect results if (SegmentHelper.ContainMatches(sourceResult, sourceTags) || SegmentHelper.ContainMatches(targetResult, targetTags)) { CollectResults(item.Properties.Id.Id, sourceText, itemStatus, sourceSegment, sourceResult, sourceTags, true); CollectResults(item.Properties.Id.Id, targetText, itemStatus, targetSegment, targetResult, targetTags, false); } } // TODO - REMOVE //// process source //if (_searchSettings.SearchInSource) //{ // sSegment = item.Source; // if (_searcher.checkSegment(sSegment.Properties.IsLocked, sSegment.Properties.ConfirmationLevel)) // { // _dataExtractor.Process(sSegment, _searchSettings.SearchInLocked); // sText = _dataExtractor.PlainText.ToString(); // sTags = _dataExtractor.Tags; // if (sText.Length > 0 || sTags.Count > 0) // { // _searcher.SearchInSegment(sText, sTags); // sResult = _searcher.resultsInText; // sTags = _searcher.resultsInTags; // CollectResults(sSegment.Properties.Id.Id, sText, sSegment, sResult, sTags, true); // } // } //} //// process target //if (_searchSettings.SearchInTarget) //{ // sSegment = item.Target; // if (_searcher.checkSegment(sSegment.Properties.IsLocked, sSegment.Properties.ConfirmationLevel)) // { // _dataExtractor.Process(sSegment, _searchSettings.SearchInLocked); // sText = _dataExtractor.PlainText.ToString(); // sTags = _dataExtractor.Tags; // if (sText.Length > 0 || sTags.Count > 0) // { // _searcher.SearchInSegment(sText, sTags); // sResult = _searcher.resultsInText; // sTags = _searcher.resultsInTags; // CollectResults(sSegment.Properties.Id.Id, sText, sSegment, sResult, sTags, false); // } // } //} } } }
public override void ProcessParagraphUnit(IParagraphUnit paragraphUnit) { var sourceResult = new List <IndexData>(); var targetResult = new List <IndexData>(); if (!paragraphUnit.IsStructure) { foreach (var item in paragraphUnit.SegmentPairs) { var itemStatus = item.Properties.ConfirmationLevel; // extract text and tags from Segment var sourceSegment = item.Source; _dataExtractor.Process(sourceSegment); var sourceTags = _dataExtractor.Tags; //we need to add a space before the soft return so the soft return is highlightable when searching for it var sourceText = _dataExtractor.PlainText.ToString().Replace("\n", " \n"); var sourceLContent = _dataExtractor.LockedContent; var targetSegment = item.Target; _dataExtractor.Process(targetSegment); //we need to add a space before the soft return so the soft return is highlightable when searching for it var targetText = _dataExtractor.PlainText.ToString().Replace("\n", " \n"); var targetTags = _dataExtractor.Tags; var targetLContent = _dataExtractor.LockedContent; // perform search if (_searcher.CheckSegment(item.Properties.IsLocked, item.Properties.ConfirmationLevel)) { if (_searchSettings.SearchInSource && (sourceText.Length > 0 || sourceTags.Count > 0)) { _searcher.SearchInSegment(sourceText, sourceTags, sourceLContent); sourceResult = _searcher.ResultsInText; sourceTags = _searcher.ResultsInTags; } if (_searchSettings.SearchInTarget && (targetText.Length > 0 || targetTags.Count > 0)) { _searcher.SearchInSegment(targetText, targetTags, targetLContent); targetResult = _searcher.ResultsInText; targetTags = _searcher.ResultsInTags; } // collect results if (SegmentHelper.ContainMatches(sourceResult, sourceTags) || SegmentHelper.ContainMatches(targetResult, targetTags)) { CollectResults(item.Properties.Id.Id, sourceText, itemStatus, sourceSegment, sourceResult, sourceTags, true); CollectResults(item.Properties.Id.Id, targetText, itemStatus, targetSegment, targetResult, targetTags, false); } } } } }
public void calcOrthogonalFor2Polygons(bool xAxis = true) { var hh = dataModel.SelectedItems.OfType <PolygonHelper>().ToArray(); var p1 = hh[0] as PolygonHelper; var p2 = hh[1] as PolygonHelper; List <SegmentHelper> s1 = new List <SegmentHelper>(); List <SegmentHelper> s2 = new List <SegmentHelper>(); //skip all segments outside boundingBox var tr1 = p1.GetTrasformed(p1.Polygon); var tr2 = p2.GetTrasformed(p2.Polygon); for (int i = 1; i < tr1.Points.Length; i++) { var p00 = tr1.Points[i - 1]; var p11 = tr1.Points[i]; s1.Add(new SegmentHelper() { Point = new Vector2d(p00.X, p00.Y), Point2 = new Vector2d(p11.X, p11.Y) }); } for (int i = 1; i < tr2.Points.Length; i++) { var p00 = tr2.Points[i - 1]; var p11 = tr2.Points[i]; s2.Add(new SegmentHelper() { Point = new Vector2d(p00.X, p00.Y), Point2 = new Vector2d(p11.X, p11.Y) }); } double mindist = double.MaxValue; SegmentHelper mins1 = null; SegmentHelper minss1 = null; SegmentHelper minss2 = null; foreach (var seg1 in s1) { foreach (var seg2 in s2) { SegmentHelper dist = null; if (xAxis) { dist = OrthogonalDist2Segments.SegmentsXDist(seg1, seg2); } else { dist = OrthogonalDist2Segments.SegmentsYDist(seg1, seg2); } if (dist != null) { if (mindist > dist.Length) { minss1 = seg1; minss2 = seg2; mindist = dist.Length; mins1 = dist; } } } } if (mins1 != null) { mins1.Reverse(); double reqDist = (mins1.Point.X > mins1.Point2.X ? -1 : 1) * mins1.Length; if (!xAxis) { reqDist = (mins1.Point.Y > mins1.Point2.Y ? -1 : 1) * mins1.Length; } dataModel.AddItem(new OrthogonalDist2Segments() { Name = $"{p1.Name} --> {p2.Name}", Segment1 = minss1.Clone(), Segment2 = minss2.Clone(), DistSegment = mins1 , RequiredOffset = reqDist }); //p1.OffsetX += (mins1.Point.X > mins1.Point2.X ? 1 : -1) * mins1.Length; } else { dataModel.ParentForm.StatusMessage("no orthogonal intersection", StatusMessageType.Warning); } }
public override void ProcessParagraphUnit(IParagraphUnit paragraphUnit) { ISegment sourceSegment; string sourceText; List <TagData> sourceTags; List <IndexData> sourceLContent; List <IndexData> sourceResult; ISegment targetSegment; string targetText; List <TagData> targetTags; List <IndexData> targetLContent; List <IndexData> targetResult; ConfirmationLevel itemStatus; if (!paragraphUnit.IsStructure) { foreach (ISegmentPair item in paragraphUnit.SegmentPairs) { sourceTags = null; sourceResult = null; targetTags = null; targetResult = null; // extract text and tags from Segment sourceSegment = item.Source; _dataExtractor.Process(sourceSegment); sourceText = _dataExtractor.PlainText.ToString(); sourceTags = _dataExtractor.Tags; sourceLContent = _dataExtractor.LockedContent; targetSegment = item.Target; _dataExtractor.Process(targetSegment); targetText = _dataExtractor.PlainText.ToString(); targetTags = _dataExtractor.Tags; targetLContent = _dataExtractor.LockedContent; // perform search if (_searcher.checkSegment(item.Properties.IsLocked, item.Properties.ConfirmationLevel)) { if (_searchSettings.SearchInSource && (sourceText.Length > 0 || sourceTags.Count > 0)) { _searcher.SearchInSegment(sourceText, sourceTags, sourceLContent); sourceResult = _searcher.resultsInText; sourceTags = _searcher.resultsInTags; } if (_searchSettings.SearchInTarget && (targetText.Length > 0 || targetTags.Count > 0)) { _searcher.SearchInSegment(targetText, targetTags, targetLContent); targetResult = _searcher.resultsInText; targetTags = _searcher.resultsInTags; } // collect results if (SegmentHelper.ContainMatches(sourceResult, sourceTags) || SegmentHelper.ContainMatches(targetResult, targetTags)) { itemStatus = (_searchSettings.UpdateStatus ? _searchSettings.NewStatus : item.Properties.ConfirmationLevel); CollectResults(item.Properties.Id.Id, sourceText, itemStatus, sourceSegment, sourceResult, sourceTags, true); CollectResults(item.Properties.Id.Id, targetText, itemStatus, targetSegment, targetResult, targetTags, false); // unlock selections if (_searchSettings.UnlockContent) { StatusUpdateHelper.UnlockContent(targetSegment, ItemFactory, PropertiesFactory); } // update segment properties StatusUpdateHelper.UpdateSegmentProperties(item, _searchSettings); } } } } base.ProcessParagraphUnit(paragraphUnit); }
/// <summary> /// Could be done at the same time as objects collisions, /// A wall could be an object with a resistance force emited on impact /// </summary> private void DetectWallColisions() { foreach (var physicalView in _physicalViews) { foreach (var collisionPoint in physicalView.CollisionPoints) { var cornerX = physicalView.RealX + collisionPoint.X; var cornerY = physicalView.RealY + collisionPoint.Y; var blockX = (int)Math.Round(cornerX / _blockSize); var blockY = (int)Math.Round(cornerY / _blockSize); var block = _mapData.GetBlockByCoordinates(blockX, blockY); if (block != null) { var previousCornerX = cornerX - physicalView.V.X; var previousCornerY = cornerY - physicalView.V.Y; var finalCornerVector = new SVector(cornerX, cornerY); var previousVectorCornerVector = new SVector(previousCornerX, previousCornerY); var topLeftVector = new SVector((blockX - 0.5) * _blockSize, (blockY - 0.5) * _blockSize); var topRightVector = new SVector((blockX + 0.5) * _blockSize, (blockY - 0.5) * _blockSize); var bottomRightVector = new SVector((blockX + 0.5) * _blockSize, (blockY + 0.5) * _blockSize); var bottomLeftVector = new SVector((blockX - 0.5) * _blockSize, (blockY + 0.5) * _blockSize); SVector intersectionVector; if (SegmentHelper.LineSegementsIntersect(previousVectorCornerVector, finalCornerVector, topLeftVector, topRightVector, out intersectionVector)) { _logger.Log($"intersection ! {intersectionVector.X} | {intersectionVector.Y}"); HandleCollisionWithBlock(physicalView, intersectionVector); physicalView.V.Y = -physicalView.V.Y; physicalView.RealX += (float)(finalCornerVector.X - intersectionVector.X); physicalView.RealY += (float)(finalCornerVector.Y - intersectionVector.Y); } else if (SegmentHelper.LineSegementsIntersect(previousVectorCornerVector, finalCornerVector, topRightVector, bottomRightVector, out intersectionVector)) { _logger.Log($"intersection ! {intersectionVector.X} | {intersectionVector.Y}"); HandleCollisionWithBlock(physicalView, intersectionVector); physicalView.V.X = -physicalView.V.X; physicalView.RealX += (float)(finalCornerVector.X - intersectionVector.X); physicalView.RealY += (float)(finalCornerVector.Y - intersectionVector.Y); } else if (SegmentHelper.LineSegementsIntersect(previousVectorCornerVector, finalCornerVector, bottomRightVector, bottomLeftVector, out intersectionVector)) { _logger.Log($"intersection ! {intersectionVector.X} | {intersectionVector.Y}"); HandleCollisionWithBlock(physicalView, intersectionVector); physicalView.V.Y = -physicalView.V.Y; physicalView.RealX += (float)(finalCornerVector.X - intersectionVector.X); physicalView.RealY += (float)(finalCornerVector.Y - intersectionVector.Y); } else if (SegmentHelper.LineSegementsIntersect(previousVectorCornerVector, finalCornerVector, bottomLeftVector, topLeftVector, out intersectionVector)) { _logger.Log($"intersection ! {intersectionVector.X} | {intersectionVector.Y}"); HandleCollisionWithBlock(physicalView, intersectionVector); physicalView.V.X = -physicalView.V.X; physicalView.RealX += (float)(finalCornerVector.X - intersectionVector.X); physicalView.RealY += (float)(finalCornerVector.Y - intersectionVector.Y); } } } } }
public static string GetUnescapedPSVstsChildName(this PSObject psObject) { return(SegmentHelper.Unescape(psObject.GetPSVstsChildName())); }
public static void EscapeAndAddPSVstsChildName(this PSObject psObject, string value) { psObject.AddEscapedPSVstsChildName(SegmentHelper.Escape(value)); }