private static Rectangle Flip(Rectangle uv, FlipMode flipMode) { if (flipMode == FlipMode.HorizontalAndVertical) { return(new Rectangle(uv.Right, uv.Bottom, -uv.Width, -uv.Height)); } if (flipMode == FlipMode.Horizontal) { return(new Rectangle(uv.Right, uv.Top, -uv.Width, uv.Height)); } if (flipMode == FlipMode.Vertical) { return(new Rectangle(uv.Left, uv.Bottom, uv.Width, -uv.Height)); } return(uv); }
public void OnMouseDragLeftPage() { if (interactable) { //DragLeftPageToPoint(transformPoint(Input.mousePosition)); mode = FlipMode.LeftDownToRight; LeftNext.gameObject.SetActive(false); Vector2 _pos = Vector2.one; RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, Input.mousePosition, canvas.worldCamera, out _pos); _pos = canvas.transform.TransformPoint(_pos); DragLeftPageToPoint(transformPoint(_pos)); } }
/// <summary> /// Flips (reflects the image) either vertical or horizontal. /// </summary> /// <param name="bmp">The WriteableBitmap.</param> /// <param name="flipMode">The flip mode.</param> /// <returns>A new WriteableBitmap that is a flipped version of the input.</returns> public static BitmapBuffer Flip(this BitmapBuffer bmp, FlipMode flipMode) { using (var context = bmp.GetBitmapContext(ReadWriteMode.ReadOnly)) { // Use refs for faster access (really important!) speeds up a lot! int w = context.Width; int h = context.Height; int[] p = context.Pixels; int i = 0; BitmapBuffer result = BitmapBufferFactory.New(w, h); if (flipMode == FlipMode.Horizontal) { using (BitmapContext destContext = result.GetBitmapContext()) { int[] rp = destContext.Pixels; for (int y = h - 1; y >= 0; y--) { for (int x = 0; x < w; x++) { int srcInd = y * w + x; rp[i] = p[srcInd]; i++; } } } } else if (flipMode == FlipMode.Vertical) { using (BitmapContext destContext = result.GetBitmapContext()) { int[] rp = destContext.Pixels; for (int y = 0; y < h; y++) { for (int x = w - 1; x >= 0; x--) { int srcInd = y * w + x; rp[i] = p[srcInd]; i++; } } } } return(result); } }
public void StartFlipping(int target) { isBookInteractable = ControledBook.interactable; ControledBook.interactable = false; flippingStarted = true; elapsedTime = 0; nextPageCountDown = 0; targetPaper = target; if (target > ControledBook.CurrentPaper) { Mode = FlipMode.RightToLeft; } else if (target < ControledBook.currentPaper) { Mode = FlipMode.LeftToRight; } }
public void UpdateBookLTRToPoint(Vector3 followLocation) { mode = FlipMode.LeftToRight; f = followLocation; if (enableShadowEffect) { ShadowLTR.transform.SetParent(ClippingPlane.transform, true); ShadowLTR.transform.localPosition = new Vector3(0, 0, 0); ShadowLTR.transform.localEulerAngles = new Vector3(0, 0, 0); Shadow.transform.SetParent(Right.transform); Shadow.rectTransform.anchoredPosition = new Vector3(0, 0, 0); Shadow.transform.localEulerAngles = Vector3.zero; Shadow.gameObject.SetActive(true); } Left.transform.SetParent(ClippingPlane.transform, true); Right.transform.SetParent(BookPanel.transform, true); c = Calc_C_Position(followLocation); Vector3 t1; float T0_T1_Angle = Calc_T0_T1_Angle(c, ebl, out t1); if (T0_T1_Angle < 0) { T0_T1_Angle += 180; } ClippingPlane.transform.localEulerAngles = new Vector3(0, 0, T0_T1_Angle - 90); ClippingPlane.transform.position = BookPanel.TransformPoint(t1); LeftPageShadow.transform.localEulerAngles = new Vector3(0, 0, T0_T1_Angle - 90); LeftPageShadow.transform.position = BookPanel.TransformPoint(t1); //page position and angle Left.transform.position = BookPanel.TransformPoint(c); float C_T1_dy = t1.y - c.y; float C_T1_dx = t1.x - c.x; float C_T1_Angle = Mathf.Atan2(C_T1_dy, C_T1_dx) * Mathf.Rad2Deg; Left.transform.localEulerAngles = new Vector3(0, 0, C_T1_Angle - 180 - (T0_T1_Angle - 90)); Right.transform.SetParent(ClippingPlane.transform, true); Right.transform.SetAsFirstSibling(); ShadowLTR.rectTransform.SetParent(Left.rectTransform, true); }
public void DragRightPageToPoint(Vector3 point) { if (currentPage >= bookPagesCount) { return; } Debug.Log(currentPage); Debug.Log(bookPagesCount); pageDragging = true; mode = FlipMode.RightToLeft; f = point; NextPageClip.rectTransform.pivot = new Vector2(0, 0.12f); ClippingPlane.rectTransform.pivot = new Vector2(1, 0.35f); Left.gameObject.SetActive(true); Left.rectTransform.pivot = new Vector2(0, 0); Left.transform.position = RightNext.transform.position; Left.transform.eulerAngles = new Vector3(0, 0, 0); //修改 //if(BookController.Instance.isHandFlip) { //Left.sprite = (currentPage < bookPagesCount) ? bookPages[currentPage] : background; } //else { //Left.sprite = bookPages[BookController.Instance.lastPageCount]; } //BookController.Instance.isHandFlip = true; Left.transform.SetAsFirstSibling(); Right.gameObject.SetActive(true); Right.transform.position = RightNext.transform.position; Right.transform.eulerAngles = new Vector3(0, 0, 0); Right.sprite = (currentPage < bookPagesCount - 1) ? bookPages[currentPage + 1] : background; RightNext.sprite = (currentPage < bookPagesCount - 2) ? bookPages[currentPage + 2] : background; LeftNext.transform.SetAsFirstSibling(); if (enableShadowEffect) { Shadow.gameObject.SetActive(true); } UpdateBookRTLToPoint(f); }
internal static Image FlipImage(Image myImage, FlipMode myFlipmode) { var ret = myImage; switch (myFlipmode) { case FlipMode.Horizontal: ret.RotateFlip(RotateFlipType.RotateNoneFlipX); break; case FlipMode.Vertical: ret.RotateFlip(RotateFlipType.RotateNoneFlipY); break; case FlipMode.Both: ret.RotateFlip(RotateFlipType.RotateNoneFlipXY); break; } return ret; }
public void DragRightPageToPoint(Vector3 point) { if (currentPage >= bookPages.Length) { return; } pageDragging = true; mode = FlipMode.RightToLeft; f = point; NextPageClip.rectTransform.pivot = new Vector2(0, 0.12f); ClippingPlane.rectTransform.pivot = new Vector2(1, 0.35f); Left.gameObject.SetActive(true); Left.rectTransform.pivot = new Vector2(0, 0); Left.transform.position = RightNext.transform.position; Left.transform.eulerAngles = new Vector3(0, 0, 0); Left.sprite = (currentPage < bookPages.Length) ? bookPages[currentPage] : background; //Left.sprite = (currentPage < 1) ? bookPages[0] : bookPages[1]; Left.transform.SetAsFirstSibling(); Right.gameObject.SetActive(true); Right.transform.position = RightNext.transform.position; Right.transform.eulerAngles = new Vector3(0, 0, 0); Right.sprite = (currentPage < bookPages.Length - 1) ? bookPages[currentPage + 1] : background; RightNext.sprite = (currentPage < bookPages.Length - 2) ? bookPages[currentPage + 2] : background; //RightNext.sprite = (currentPage < bookPages.Length - 2) ? bookPages[currentPage + 2] : background; //RightNext.sprite = (currentPage < 1) ? bookPages[1] : background; LeftNext.transform.SetAsFirstSibling(); if (enableShadowEffect) { Shadow.gameObject.SetActive(true); } /* * Hand1.gameObject.SetActive(true); * Hand1.transform.position= f; */ UpdateBookRTLToPoint(f); }
public void DragLeftPageToPoint(Vector3 point) { if (CurrentPage <= 0) { return; } pageDragging = true; mode = FlipMode.LeftToRight; _followPoint = point; _nextPageClipTransform.pivot = new Vector2(1, 0.12f); _clippingPanelTransform.pivot = new Vector2(0, 0.35f); _rightTransform.gameObject.SetActive(true); var leftNextPosition = _leftNextTransform.position; _rightTransform.position = leftNextPosition; var rightPage = _bookPages[CurrentPage]; SetPage(rightPage, _rightTransform); _rightTransform.eulerAngles = Vector3.zero; _rightTransform.SetAsFirstSibling(); _leftTransform.gameObject.SetActive(true); _leftTransform.pivot = new Vector2(1, 0); _leftTransform.position = leftNextPosition; _leftTransform.eulerAngles = Vector3.zero; var leftPage = _bookPages[CurrentPage - 1]; SetPage(leftPage, _leftTransform); var leftNextPage = _bookPages[CurrentPage - 2]; SetPage(leftNextPage, _leftNextTransform); _rightNextTransform.SetAsFirstSibling(); if (_enableShadowEffect) { _shadowLTRTransform.gameObject.SetActive(true); } UpdateBookLTRToPoint(_followPoint); }
public WindowsCapture(int index) : this() { InnerCapture = new VideoCapture(index); InnerCapture.Set(CaptureProperty.FourCC, (double)FourCC.MJPG); InnerCapture.Set(CaptureProperty.Fps, 30); InnerCapture.Set(CaptureProperty.FrameWidth, 2048); InnerCapture.Set(CaptureProperty.FrameHeight, 2048); double w = InnerCapture.Get(CaptureProperty.FrameWidth); double h = InnerCapture.Get(CaptureProperty.FrameHeight); Logger.Log($"Capture Size: (w:{w},h:{h}) CaptureFormat:{InnerCapture.Get(CaptureProperty.FourCC)}"); flip = true; flipMode = FlipMode.Y; }
public unsafe Texture(GL gl, string path, FlipMode fm) { //Loading an image using imagesharp. Image <Rgba32> img = (Image <Rgba32>)Image.Load(path); //We need to flip our image as image sharps coordinates has origin (0, 0) in the top-left corner, //where as openGL has origin in the bottom-left corner. img.Mutate(x => x.Flip(fm)); fixed(void *data = &MemoryMarshal.GetReference(img.GetPixelRowSpan(0))) { //Loading the actual image. Load(gl, data, (uint)img.Width, (uint)img.Height); } //Deleting the img from imagesharp. img.Dispose(); }
public static async void FlipDir(FlipMode mode) { int counter = 1; FileInfo[] files = IOUtils.GetFiles(); Program.PreProcessing(); foreach (FileInfo file in files) { Program.ShowProgress("Flipping Image ", counter, files.Length); counter++; Flip(file.FullName, mode); if (counter % 3 == 0) { await Program.PutTaskDelay(); } } Program.PostProcessing(files.Length); }
internal static object GetColourPixelsFromBitmap(Bitmap bitmap, FlipMode flipMode, out byte[] rawBitmapBytes) { int[, ,] bitmapPixels = new int[bitmap.Width, bitmap.Height, 3]; rawBitmapBytes = new byte[(bitmap.Width * bitmap.Height * 3) + 40 + 14 + 1]; IntPtr hBitmap = bitmap.GetHbitmap(); try { GetColourPixelsFromBitmap(bitmap.Width, bitmap.Height, 8, flipMode, hBitmap, bitmapPixels, rawBitmapBytes); } finally { DeleteObject(hBitmap); } return(bitmapPixels); }
public void DragRightPageToPoint(Vector3 point) { if (CurrentPage >= _bookPages.Length) { return; } pageDragging = true; mode = FlipMode.RightToLeft; _followPoint = point; _nextPageClipTransform.pivot = new Vector2(0, 0.12f); _clippingPanelTransform.pivot = new Vector2(1, 0.35f); _leftTransform.gameObject.SetActive(true); _leftTransform.pivot = new Vector2(0, 0); var rightNextPosition = _rightNextTransform.position; _leftTransform.position = rightNextPosition; _leftTransform.eulerAngles = new Vector3(0, 0, 0); var leftPage = _bookPages[CurrentPage + 1]; SetPage(leftPage, _leftTransform); _leftTransform.SetAsFirstSibling(); _rightTransform.gameObject.SetActive(true); _rightTransform.position = rightNextPosition; _rightTransform.eulerAngles = new Vector3(0, 0, 0); var rightPage = _bookPages[CurrentPage + 2]; SetPage(rightPage, _rightTransform); var rightNextPage = _bookPages[CurrentPage + 3]; SetPage(rightNextPage, _rightNextTransform); _leftNextTransform.SetAsFirstSibling(); if (_enableShadowEffect) { _shadowTransform.gameObject.SetActive(true); } UpdateBookRTLToPoint(_followPoint); }
public void DragRightPageToPoint(Vector3 point) { #region DEFAULT=bookPages.Lenth if (currentPage >= bookPages.Length - 1) { print(">>>Show result panel"); BookController.Instance.ResultPanel.gameObject.SetActive(true); backButton.transform.TweenTranfrom(Siri.Ttype.Scale, Easing.Type.EaseOutBounce, new Vector3(1, 1, 1), new Vector3(1.1f, 1.1f, 1), 0.25f); return; } #endregion pageDragging = true; mode = FlipMode.RightToLeft; f = point; NextPageClip.rectTransform.pivot = new Vector2(0, 0.12f); ClippingPlane.rectTransform.pivot = new Vector2(1, 0.35f); Left.gameObject.SetActive(true); Left.rectTransform.pivot = new Vector2(0, 0); Left.transform.position = RightNext.transform.position; Left.transform.eulerAngles = new Vector3(0, 0, 0); // Left.sprite = (currentPage < bookPages.Length) ? bookPages[currentPage] : background; Left.transform.SetAsFirstSibling(); Right.gameObject.SetActive(true); Right.transform.position = RightNext.transform.position; Right.transform.eulerAngles = new Vector3(0, 0, 0); #region ADD_BLANK_PAGE // Right.sprite = (currentPage < bookPages.Length - 1) ? bookPages[currentPage + 1] : background; Right.sprite = blankPage; // RightNext.sprite = (currentPage < bookPages.Length - 1) ? bookPages[currentPage + 1] : background; page.sprite = (currentPage < bookPages.Length - 1) ? bookPages[currentPage + 1] : background; pageL.sprite = (currentPage <= bookPages.Length - 1) ? bookPages[currentPage] : background; bookText.text = (currentPage < bookPages.Length - 1) ? pageText[currentPage + 1] : ""; bookTextL.text = (currentPage <= bookPages.Length - 1) ? pageText[currentPage] : ""; #endregion LeftNext.transform.SetAsFirstSibling(); if (enableShadowEffect) { Shadow.gameObject.SetActive(true); } UpdateBookRTLToPoint(f); }
public void DragRightPageToPoint(Vector3 point) { if (currentPage == bookPages.Length - 1) { Debug.Log(currentPage); Debug.Log(bookPages.Length); Debug.Log("ini scroll terakhir"); } if (currentPage >= bookPages.Length) { return; } pageDragging = true; mode = FlipMode.RightToLeft; f = point; NextPageClip.rectTransform.pivot = new Vector2(0, 0.12f); ClippingPlane.rectTransform.pivot = new Vector2(1, 0.35f); Left.gameObject.SetActive(true); Left.rectTransform.pivot = new Vector2(0, 0); Left.transform.position = RightNext.transform.position; Left.transform.eulerAngles = new Vector3(0, 0, 0); Left.sprite = (currentPage < bookPages.Length) ? bookPages[currentPage] : background; Left.transform.SetAsFirstSibling(); Right.gameObject.SetActive(true); Right.transform.position = RightNext.transform.position; Right.transform.eulerAngles = new Vector3(0, 0, 0); Right.sprite = (currentPage < bookPages.Length - 1) ? bookPages[currentPage + 1] : background; RightNext.sprite = (currentPage < bookPages.Length - 2) ? bookPages[currentPage + 2] : background; LeftNext.transform.SetAsFirstSibling(); if (enableShadowEffect) { Shadow.gameObject.SetActive(true); } UpdateBookRTLToPoint(f); Debug.Log("Geser kiri"); }
public static AvgColor[] Flip(this AvgColor[] colors, int width, FlipMode flipMode) { if (colors == null || width <= 0) { return(colors); } if (flipMode.HasFlag(FlipMode.Vertical)) { return(flipMode.HasFlag(FlipMode.Horizontal) ? colors.Reverse().ToArray() : colors.FlipVertical(width)); } if (flipMode.HasFlag(FlipMode.Horizontal)) { return(colors.FlipHorizontal(width)); } return(colors); }
/// <summary> /// 由右向左翻页时 更新位置 /// </summary> /// <param name="followLocation"></param> public void UpdateBookRTLToPoint(Vector3 followLocation) { mode = FlipMode.RightDownToRight; f = followLocation; Shadow.transform.SetParent(ClippingPlane.transform, true); Shadow.transform.localPosition = new Vector3(0, 0, 0); Shadow.transform.localEulerAngles = new Vector3(0, 0, 0); Right.transform.SetParent(ClippingPlane.transform, true); Left.transform.SetParent(BookPanel.transform, true); RightNext.transform.SetParent(BookPanel.transform, true); c = Calc_C_Position(followLocation); Vector3 t1; float T0_T1_Angle = Calc_T0_T1_Angle(c, ebr, out t1); if (T0_T1_Angle >= -90) { T0_T1_Angle -= 180; } ClippingPlane.rectTransform.pivot = new Vector2(1, 0.35f); //ClippingPlane.transform.eulerAngles = new Vector3(0, 0, T0_T1_Angle + 90); ClippingPlane.transform.eulerAngles = new Vector3(0, 0, T0_T1_Angle + 90) + BookPanel.eulerAngles; ClippingPlane.transform.position = BookPanel.TransformPoint(t1); //page position and angle Right.transform.position = BookPanel.TransformPoint(c); float C_T1_dy = t1.y - c.y; float C_T1_dx = t1.x - c.x; float C_T1_Angle = Mathf.Atan2(C_T1_dy, C_T1_dx) * Mathf.Rad2Deg; Right.transform.eulerAngles = new Vector3(0, 0, C_T1_Angle) + BookPanel.eulerAngles; //NextPageClip.transform.eulerAngles = new Vector3(0, 0, T0_T1_Angle + 90); NextPageClip.transform.eulerAngles = new Vector3(0, 0, T0_T1_Angle + 90) + BookPanel.eulerAngles; NextPageClip.transform.position = BookPanel.TransformPoint(t1); RightNext.transform.SetParent(NextPageClip.transform, true); Left.transform.SetParent(ClippingPlane.transform, true); Left.transform.SetAsFirstSibling(); Shadow.rectTransform.SetParent(Right.rectTransform, true); }
//右下角的点 public void UpdateBookLTRToPoint(Vector3 followLocation) { mode = FlipMode.LeftToRight; f = followLocation; ShadowLTR.transform.SetParent(NextPageClip.transform, true); ShadowLTR.transform.localPosition = new Vector3(0, 0, 0); ShadowLTR.transform.localEulerAngles = new Vector3(0, 0, 0); Left.transform.SetParent(ClippingPlane.transform, true); Right.transform.SetParent(BookPanel.transform, true); //LeftNext.transform.SetParent(BookPanel.transform, true); c = Calc_C_Position(followLocation); Vector3 t1; float T0_T1_Angle = Calc_T0_T1_Angle(c, ebt, out t1); //if (T0_T1_Angle < 0) T0_T1_Angle += 180; ClippingPlane.rectTransform.pivot = new Vector2(1, 0.35f); ClippingPlane.transform.eulerAngles = new Vector3(0, 0, T0_T1_Angle - 90);//遮罩 ClippingPlane.transform.position = BookPanel.TransformPoint(t1); NextPageClip.transform.eulerAngles = new Vector3(0, 0, T0_T1_Angle + 90);//隐藏 NextPageClip.transform.position = BookPanel.TransformPoint(t1); //page position and angle float C_T1_dy = t1.y - c.y; float C_T1_dx = t1.x - c.x; float C_T1_Angle = Mathf.Atan2(C_T1_dy, C_T1_dx) * Mathf.Rad2Deg; Left.transform.position = BookPanel.TransformPoint(c); Left.transform.eulerAngles = new Vector3(0, 0, C_T1_Angle - 90);//显示的牌 //LeftNext.transform.SetParent(NextPageClip.transform, true); Right.transform.SetParent(ClippingPlane.transform, true); Right.transform.SetAsFirstSibling(); ShadowLTR.rectTransform.SetParent(Left.rectTransform, true); }
public void DragLeftPageToPoint(Vector3 point) // 翻起左边页(起手) { if (currentPaper <= StartFlippingPaper) { return; } pageDragging = true; mode = FlipMode.LeftToRight; f = point; UpdatePages(); ClippingPlane.rectTransform.pivot = new Vector2(0, 0.35f); Right = papers[currentPaper - 1].Back.GetComponent <Image>(); BookUtility.ShowPage(Right.gameObject); Right.transform.position = LeftPageTransform.transform.position; Right.transform.localEulerAngles = new Vector3(0, 0, 0); Right.transform.SetAsFirstSibling(); Left = papers[currentPaper - 1].Front.GetComponent <Image>(); BookUtility.ShowPage(Left.gameObject); Left.gameObject.SetActive(true); Left.rectTransform.pivot = new Vector2(1, 0); Left.transform.position = LeftPageTransform.transform.position; Left.transform.localEulerAngles = new Vector3(0, 0, 0); if (enableShadowEffect) { ShadowLTR.gameObject.SetActive(true); } ClippingPlane.gameObject.SetActive(true); UpdateBookLTRToPoint(f); if (currentPaper == 1) // 如果是第0页,那就改下成小背景 { mBgToggle.Change2One(); } }
/// <summary> /// 更新页面 /// </summary> /// <param name="moveSpace"></param> /// <param name="mode"></param> public void UpdatePage(Vector3 moveSpace, FlipMode mode) { this.MoveSpace = moveSpace; this.FlipMode = mode; if (IsOpened) { return; } switch (mode) { case FlipMode.Left: UpdateLeftMode(moveSpace); break; case FlipMode.Middle: default: UpdateMiddleMode(moveSpace); break; } }
internal static Image FlipImage(Image myImage, FlipMode myFlipmode) { var ret = myImage; switch (myFlipmode) { case FlipMode.Horizontal: ret.RotateFlip(RotateFlipType.RotateNoneFlipX); break; case FlipMode.Vertical: ret.RotateFlip(RotateFlipType.RotateNoneFlipY); break; case FlipMode.Both: ret.RotateFlip(RotateFlipType.RotateNoneFlipXY); break; } return(ret); }
public void DragLeftPageToPoint(Vector3 point) { if (IsFirstPage()) { return; } if (_pageFlipping) { return; } _pageFlipping = true; _mode = FlipMode.LeftToRight; _f = point; nextPageClip.rectTransform.pivot = new Vector2(1, 0.12f); clippingPlane.rectTransform.pivot = new Vector2(0, 0.35f); rightOnFlip.gameObject.SetActive(true); rightOnFlip.transform.position = left.transform.position; rightOnFlip.transform.eulerAngles = new Vector3(0, 0, 0); rightOnFlip.transform.SetAsFirstSibling(); leftOnFlip.gameObject.SetActive(true); leftOnFlip.rectTransform.pivot = new Vector2(1, 0); leftOnFlip.transform.position = left.transform.position; leftOnFlip.transform.eulerAngles = new Vector3(0, 0, 0); //Left.rectTransform.pivot = new Vector2(1, 0); right.transform.SetAsFirstSibling(); UpdatePagesOnFlip(); if (enableShadowEffect) { shadowLTR.gameObject.SetActive(true); } UpdateFlipLeft2RightToPoint(_f); }
/// <summary> /// Flips an image along a specified axis /// </summary> /// <param name="image">Image to flip</param> /// <param name="mode">Axis along which to flip</param> /// <returns>A new flipped image</returns> public static Shared <Image> Flip(this Image image, FlipMode mode) { var bitmap = new Bitmap(image.Width, image.Height); var graphics = Graphics.FromImage(bitmap); switch (mode) { case FlipMode.AlongHorizontalAxis: graphics.TranslateTransform(0.0f, image.Height - 1); graphics.ScaleTransform(1.0f, -1.0f); break; case FlipMode.AlongVerticalAxis: graphics.TranslateTransform(image.Width - 1, 0.0f); graphics.ScaleTransform(-1.0f, 1.0f); break; } graphics.DrawImage(image.ToManagedImage(), new Point(0, 0)); return(ImagePool.GetOrCreate(bitmap)); }
public void UpdateBookRTLToPoint(Vector3 followLocation) { mode = FlipMode.RightToLeft; _followPoint = followLocation; _shadowTransform.SetParent(_clippingPanelTransform, true); _shadowTransform.localPosition = new Vector3(0, 0, 0); _shadowTransform.localEulerAngles = new Vector3(0, 0, 0); _rightTransform.SetParent(_clippingPanelTransform, true); _leftTransform.SetParent(_bookTransform, true); _rightNextTransform.SetParent(_bookTransform, true); _pageCorner = Calc_C_Position(followLocation); Vector3 t1; float T0_T1_Angle = Calc_T0_T1_Angle(_pageCorner, _edgeBottomRight, out t1); if (T0_T1_Angle >= -90) { T0_T1_Angle -= 180; } _clippingPanelTransform.pivot = new Vector2(1, 0.35f); _clippingPanelTransform.eulerAngles = new Vector3(0, 0, T0_T1_Angle + 90); _clippingPanelTransform.position = _bookTransform.TransformPoint(t1); //page position and angle _rightTransform.position = _bookTransform.TransformPoint(_pageCorner); float C_T1_dy = t1.y - _pageCorner.y; float C_T1_dx = t1.x - _pageCorner.x; float C_T1_Angle = Mathf.Atan2(C_T1_dy, C_T1_dx) * Mathf.Rad2Deg; _rightTransform.eulerAngles = new Vector3(0, 0, C_T1_Angle); _nextPageClipTransform.eulerAngles = new Vector3(0, 0, T0_T1_Angle + 90); _nextPageClipTransform.position = _bookTransform.TransformPoint(t1); _rightNextTransform.SetParent(_nextPageClipTransform, true); _leftTransform.SetParent(_clippingPanelTransform, true); _leftTransform.SetAsFirstSibling(); _shadowTransform.SetParent(_rightTransform, true); }
public void DragLeftPageToPoint(Vector3 point) { if (currentPage <= 0) { return; } pageDragging = true; mode = FlipMode.LeftToRight; f = point; NextPageClip.rectTransform.pivot = new Vector2(1, 0.12f); ClippingPlane.rectTransform.pivot = new Vector2(0, 0.12f); if (currentPage - 3 > 0) { currentL.text = pageText [currentPage - 3].Replace("<br>", "\n"); } nextR.text = pageText [currentPage - 1].Replace("<br>", "\n"); Right.gameObject.SetActive(true); Right.transform.position = LeftNext.transform.position; Right.sprite = bookPages[currentPage - 1]; Right.transform.eulerAngles = new Vector3(0, 0, 0); Right.transform.SetAsFirstSibling(); Left.gameObject.SetActive(true); Left.rectTransform.pivot = new Vector2(1, 0); Left.transform.position = LeftNext.transform.position; Left.transform.eulerAngles = new Vector3(0, 0, 0); Left.sprite = (currentPage >= 2) ? bookPages[currentPage - 2] : background; LeftNext.sprite = (currentPage >= 3) ? bookPages[currentPage - 3] : background; RightNext.transform.SetAsFirstSibling(); if (enableShadowEffect) { ShadowLTR.gameObject.SetActive(true); } UpdateBookLTRToPoint(f); }
/// <summary> /// Flips (reflects the image) eiter vertical or horizontal. /// </summary> /// <param name="bmp">The WriteableBitmap.</param> /// <param name="flipMode">The flip mode.</param> /// <returns>A new WriteableBitmap that is a flipped version of the input.</returns> public static WriteableBitmap Flip(this WriteableBitmap bmp, FlipMode flipMode) { // Use refs for faster access (really important!) speeds up a lot! var w = bmp.PixelWidth; var h = bmp.PixelHeight; var p = bmp.Pixels; var i = 0; WriteableBitmap result = null; if (flipMode == FlipMode.Horizontal) { result = new WriteableBitmap(w, h); var rp = result.Pixels; for (var y = h - 1; y >= 0; y--) { for (var x = 0; x < w; x++) { var srcInd = y * w + x; rp[i] = p[srcInd]; i++; } } } else if (flipMode == FlipMode.Vertical) { result = new WriteableBitmap(w, h); var rp = result.Pixels; for (var y = 0; y < h; y++) { for (var x = w - 1; x >= 0; x--) { var srcInd = y * w + x; rp[i] = p[srcInd]; i++; } } } return(result); }
public static Volume Flip(this Volume volume, FlipMode mode) { Volume result = volume; if (mode == FlipMode.LeftRight || mode == FlipMode.Both) { // flip volume horziontally var w = volume.CloneAndZero(); for (var x = 0; x < volume.Width; x++) { for (var y = 0; y < volume.Height; y++) { for (var depth = 0; depth < volume.Depth; depth++) { w.Set(x, y, depth, volume.Get(volume.Width - x - 1, y, depth)); // copy data over } } } result = w; //swap } if (mode == FlipMode.UpDown || mode == FlipMode.Both) { // flip volume horziontally var w = volume.CloneAndZero(); for (var x = 0; x < volume.Width; x++) { for (var y = 0; y < volume.Height; y++) { for (var depth = 0; depth < volume.Depth; depth++) { w.Set(x, y, depth, result.Get(x, volume.Height - y - 1, depth)); // copy data over } } } result = w; //swap } return(result); }
public void UpdateFlipRight2LeftToPoint(Vector3 followLocation) { _mode = FlipMode.RightToLeft; _f = followLocation; shadow.transform.SetParent(clippingPlane.transform, true); shadow.transform.localPosition = new Vector3(0, 0, 0); shadow.transform.localEulerAngles = new Vector3(0, 0, 0); rightOnFlip.transform.SetParent(clippingPlane.transform, true); leftOnFlip.transform.SetParent(bookPanel.transform, true); right.transform.SetParent(bookPanel.transform, true); _c = Calc_C_Position(followLocation); Vector3 t1; float T0_T1_Angle = Calc_T0_T1_Angle(_c, _ebr, out t1); if (T0_T1_Angle >= -90) { T0_T1_Angle -= 180; } clippingPlane.rectTransform.pivot = new Vector2(1, 0.35f); clippingPlane.transform.eulerAngles = new Vector3(0, 0, T0_T1_Angle + 90); clippingPlane.transform.position = bookPanel.TransformPoint(t1); //page position and angle rightOnFlip.transform.position = bookPanel.TransformPoint(_c); float C_T1_dy = t1.y - _c.y; float C_T1_dx = t1.x - _c.x; float C_T1_Angle = Mathf.Atan2(C_T1_dy, C_T1_dx) * Mathf.Rad2Deg; rightOnFlip.transform.eulerAngles = new Vector3(0, 0, C_T1_Angle); nextPageClip.transform.eulerAngles = new Vector3(0, 0, T0_T1_Angle + 90); nextPageClip.transform.position = bookPanel.TransformPoint(t1); right.transform.SetParent(nextPageClip.transform, true); leftOnFlip.transform.SetParent(clippingPlane.transform, true); leftOnFlip.transform.SetAsFirstSibling(); shadow.rectTransform.SetParent(rightOnFlip.rectTransform, true); }
public void DragRightPageToPoint(Vector3 point) // 翻起右边页(起手) { if (currentPaper > EndFlippingPaper) { return; } pageDragging = true; mode = FlipMode.RightToLeft; f = point; ClippingPlane.rectTransform.pivot = new Vector2(1, 0.35f); currentPaper += 1; UpdatePages(); Left = papers[currentPaper - 1].Front.GetComponent <Image>(); BookUtility.ShowPage(Left.gameObject); Left.rectTransform.pivot = new Vector2(0, 0); Left.transform.position = RightPageTransform.transform.position; Left.transform.localEulerAngles = new Vector3(0, 0, 0); Right = papers[currentPaper - 1].Back.GetComponent <Image>(); BookUtility.ShowPage(Right.gameObject); Right.transform.position = RightPageTransform.transform.position; Right.transform.localEulerAngles = new Vector3(0, 0, 0); if (enableShadowEffect) { Shadow.gameObject.SetActive(true); } ClippingPlane.gameObject.SetActive(true); UpdateBookRTLToPoint(f); if (currentPaper == papers.Length) // 最后一页的情况 { mBgToggle.Change2Three(); } }
public void UpdateBookLTRToPoint(Vector3 followLocation) { mode = FlipMode.LeftToRight; f = followLocation; ShadowLTR.transform.SetParent(ClippingPlane.transform, true); ShadowLTR.transform.localPosition = new Vector3(0, 0, 0); ShadowLTR.transform.localEulerAngles = new Vector3(0, 0, 0); Left.transform.SetParent(ClippingPlane.transform, true); Right.transform.SetParent(BookPanel.transform, true); Right.transform.localEulerAngles = Vector3.zero; LeftNext.transform.SetParent(BookPanel.transform, true); c = Calc_C_Position(followLocation); Vector3 t1; float clipAngle = CalcClipAngle(c, ebl, out t1); //0 < T0_T1_Angle < 180 clipAngle = (clipAngle + 180) % 180; ClippingPlane.transform.localEulerAngles = new Vector3(0, 0, clipAngle - 90); ClippingPlane.transform.position = BookPanel.TransformPoint(t1); //page position and angle Left.transform.position = BookPanel.TransformPoint(c); float C_T1_dy = t1.y - c.y; float C_T1_dx = t1.x - c.x; float C_T1_Angle = Mathf.Atan2(C_T1_dy, C_T1_dx) * Mathf.Rad2Deg; Left.transform.localEulerAngles = new Vector3(0, 0, C_T1_Angle - 90 - clipAngle); NextPageClip.transform.localEulerAngles = new Vector3(0, 0, clipAngle - 90); NextPageClip.transform.position = BookPanel.TransformPoint(t1); LeftNext.transform.SetParent(NextPageClip.transform, true); Right.transform.SetParent(ClippingPlane.transform, true); Right.transform.SetAsFirstSibling(); ShadowLTR.rectTransform.SetParent(Left.rectTransform, true); }
internal Shape() { this.position = new Point(0, 0); this.svgHandle = new Handle(); this.size = new Size(); this.size.Width = 0; this.size.Height = 0; this.zoom = 0; this.rotation = 0; this.selected = false; this.flipMode = FlipMode.None; this.svgContent = null; this.svgDoc = new XmlDocument(); }
/// <summary> /// Perform the requested flip /// </summary> /// <param name="pbOutData">Pointer to the output buffer</param> /// <param name="cbInData">Size of input buffer</param> /// <param name="pbInData">Pointer to input buffer</param> /// <param name="BPP">Bytes (not bits) per pixel</param> /// <param name="mode">What type of flip to do</param> private void DoFlip(IntPtr pbOutData, int cbInData, IntPtr pbInData, int BPP, FlipMode mode) { switch (mode) { // No flip, just copy the data case FlipMode.None: CopyMemory(pbOutData, pbInData, cbInData); break; // Flip along the y axis case FlipMode.FlipY: // Point to the last row of the dest and walk backwards pbOutData = (IntPtr)(pbOutData.ToInt32() + cbInData - m_Stride); for (int x=0; x < m_Height; x++) { // Copy a row CopyMemory(pbOutData, pbInData, m_Stride); // Walk forward thru the src, and backward thru the src pbInData = (IntPtr)(pbInData.ToInt32() + m_Stride); pbOutData = (IntPtr)(pbOutData.ToInt32() - m_Stride); } break; // Flip along the X axis case FlipMode.FlipX: // For each row for (int x=0; x < m_Height; x++) { // Calculate the read/write positions int s = (x * m_Stride); int src = s; int dst = (m_Stride - BPP) + s; // For each pixel in the row for (int y=0; y < m_Width; y ++) { if (BPP == 4) { // Read the pixel, write the pixel int i1 = Marshal.ReadInt32(pbInData, src); Marshal.WriteInt32(pbOutData, dst, i1); } else { // Read the pixel short s1 = Marshal.ReadInt16(pbInData, 0 + src); byte i3 = Marshal.ReadByte(pbInData, 2 + src); // Write the pixel (if you mess up the order here, // you can get very strange looking output!) Marshal.WriteInt16(pbOutData, 0 + dst, s1); Marshal.WriteByte(pbOutData, 2 + dst, i3); } src += BPP; dst -= BPP; } } break; // Flip along both the X & Y axis case FlipMode.FlipY | FlipMode.FlipX: // For each row for (int x=0; x < m_Height; x++) { // Calculate the read/write positions int src = (x * m_Stride); int dst = (m_Stride - BPP) + (cbInData - ((x+1) * m_Stride)); // For each pixel in the row for (int y=0; y < m_Width; y ++) { if (BPP == 4) { int i1 = Marshal.ReadInt32(pbInData, 0 + src); Marshal.WriteInt32(pbOutData, 0 + dst, i1); } else { short s1 = Marshal.ReadInt16(pbInData, 0 + src); byte i3 = Marshal.ReadByte(pbInData, 2 + src); Marshal.WriteInt16(pbOutData, 0 + dst, s1); Marshal.WriteByte(pbOutData, 2 + dst, i3); } src += BPP; dst -= BPP; } } break; } }
public unsafe void FlipBuffer(FlipMode flipMode) { PixelBuffer pb = new PixelBuffer(_width, _height); fixed (int* src = _buffer) { fixed (int* dest = pb.InternalBuffer) { switch (flipMode) { default: case FlipMode.FlipHorizontal: FlipBufferHorizontal(src, dest); break; case FlipMode.FlipVertical: FlipBufferVertical(src, dest); break; case FlipMode.FlipBoth: FlipBufferBoth(src, dest); break; } } } fixed (int* src = pb.InternalBuffer) { fixed (int* dest = _buffer) { CopyBuffer(dest, src, _pixelsCount); } } pb.Dispose(); }
public void FlipHorizontally() { if((this.FlipMode & FlipMode.Horizontal) == FlipMode.Horizontal) this.flipMode ^= FlipMode.Horizontal; else this.flipMode |= FlipMode.Horizontal; }
/// <summary> /// reverses the order of the rows, columns or both in a matrix /// </summary> /// <param name="src">The source array</param> /// <param name="dst">The destination array; will have the same size and same type as src</param> /// <param name="flipCode">Specifies how to flip the array: /// 0 means flipping around the x-axis, positive (e.g., 1) means flipping around y-axis, /// and negative (e.g., -1) means flipping around both axes. See also the discussion below for the formulas.</param> public static void Flip(InputArray src, OutputArray dst, FlipMode flipCode) { if (src == null) throw new ArgumentNullException("src"); if (dst == null) throw new ArgumentNullException("dst"); src.ThrowIfDisposed(); dst.ThrowIfNotReady(); NativeMethods.core_flip(src.CvPtr, dst.CvPtr, (int)flipCode); GC.KeepAlive(src); dst.Fix(); }
/// <summary> /// reverses the order of the rows, columns or both in a matrix /// </summary> /// <param name="flipCode">Specifies how to flip the array: /// 0 means flipping around the x-axis, positive (e.g., 1) means flipping around y-axis, /// and negative (e.g., -1) means flipping around both axes. See also the discussion below for the formulas.</param> /// <returns>The destination array; will have the same size and same type as src</returns> public Mat Flip(FlipMode flipCode) { var dst = new Mat(); Cv2.Flip(this, dst, flipCode); return dst; }
public void DragLeftPageToPoint(Vector3 point) { if (currentPage <= 0) return; pageDragging = true; mode = FlipMode.LeftToRight; f = point; NextPageClip.rectTransform.pivot = new Vector2(1, 0.12f); ClippingPlane.rectTransform.pivot = new Vector2(0, 0.35f); Right.gameObject.SetActive(true); Right.transform.position = LeftNext.transform.position; Right.sprite = bookPages[currentPage - 1]; Right.transform.eulerAngles = new Vector3(0, 0, 0); Right.transform.SetAsFirstSibling(); Left.gameObject.SetActive(true); Left.rectTransform.pivot = new Vector2(1, 0); Left.transform.position = LeftNext.transform.position; Left.transform.eulerAngles = new Vector3(0, 0, 0); Left.sprite = (currentPage >= 2) ? bookPages[currentPage - 2] : background; LeftNext.sprite = (currentPage >= 3) ? bookPages[currentPage - 3] : background; RightNext.transform.SetAsFirstSibling(); if (enableShadowEffect) ShadowLTR.gameObject.SetActive(true); UpdateBookLTRToPoint(f); }
public void DragRightPageToPoint(Vector3 point) { if (currentPage >= bookPages.Length) return; pageDragging = true; mode = FlipMode.RightToLeft; f = point; NextPageClip.rectTransform.pivot = new Vector2(0, 0.12f); ClippingPlane.rectTransform.pivot = new Vector2(1, 0.35f); Left.gameObject.SetActive(true); Left.rectTransform.pivot = new Vector2(0, 0); Left.transform.position = RightNext.transform.position; Left.transform.eulerAngles = new Vector3(0, 0, 0); Left.sprite = (currentPage < bookPages.Length) ? bookPages[currentPage] : background; Left.transform.SetAsFirstSibling(); Right.gameObject.SetActive(true); Right.transform.position = RightNext.transform.position; Right.transform.eulerAngles = new Vector3(0, 0, 0); Right.sprite = (currentPage < bookPages.Length - 1) ? bookPages[currentPage + 1] : background; RightNext.sprite = (currentPage < bookPages.Length - 2) ? bookPages[currentPage + 2] : background; LeftNext.transform.SetAsFirstSibling(); if (enableShadowEffect) Shadow.gameObject.SetActive(true); UpdateBookRTLToPoint(f); }
public void UpdateBookRTLToPoint(Vector3 followLocation) { mode = FlipMode.RightToLeft; f = followLocation; Shadow.transform.SetParent(ClippingPlane.transform, true); Shadow.transform.localPosition = new Vector3(0, 0, 0); Shadow.transform.localEulerAngles = new Vector3(0, 0, 0); Right.transform.SetParent(ClippingPlane.transform, true); Left.transform.SetParent(BookPanel.transform, true); RightNext.transform.SetParent(BookPanel.transform, true); c = Calc_C_Position(followLocation); Vector3 t1; float T0_T1_Angle = Calc_T0_T1_Angle(c,ebr,out t1); if (T0_T1_Angle >= -90) T0_T1_Angle -= 180; ClippingPlane.rectTransform.pivot = new Vector2(1, 0.35f); ClippingPlane.transform.eulerAngles = new Vector3(0, 0, T0_T1_Angle + 90); ClippingPlane.transform.position = BookPanel.TransformPoint(t1); //page position and angle Right.transform.position = BookPanel.TransformPoint(c); float C_T1_dy = t1.y - c.y; float C_T1_dx = t1.x - c.x; float C_T1_Angle = Mathf.Atan2(C_T1_dy, C_T1_dx) * Mathf.Rad2Deg; Right.transform.eulerAngles = new Vector3(0, 0, C_T1_Angle); NextPageClip.transform.eulerAngles = new Vector3(0, 0, T0_T1_Angle + 90); NextPageClip.transform.position = BookPanel.TransformPoint(t1); RightNext.transform.SetParent(NextPageClip.transform, true); Left.transform.SetParent(ClippingPlane.transform, true); Left.transform.SetAsFirstSibling(); Shadow.rectTransform.SetParent(Right.rectTransform, true); }
/// <summary> /// Combines the given flipping info and rotation angle into a RotateFlipType value. Rotation angle will snap to nearest 90-degree multiple /// </summary> /// <param name="flip"></param> /// <param name="angle"></param> /// <returns></returns> public static RotateFlipType CombineFlipAndRotate(FlipMode flip, double angle) { angle = NormalizeTo90Intervals(angle); if (flip == FlipMode.None) { return (RotateFlipType)(int)(angle / 90); } else if (flip == FlipMode.X) { return (RotateFlipType)(int)(4 + (angle / 90)); } else if (flip == FlipMode.Y) { if (angle == 0) return (RotateFlipType)6; if (angle == 90) return (RotateFlipType)7; if (angle == 180) return (RotateFlipType)4; if (angle == 270) return (RotateFlipType)5; } else if (flip == FlipMode.XY) { if (angle == 0) return (RotateFlipType)2; if (angle == 90) return (RotateFlipType)3; if (angle == 180) return (RotateFlipType)0; if (angle == 270) return (RotateFlipType)1; } else { throw new ArgumentException("Invalid FlipMode value " + flip.ToString()); } throw new ArgumentException("Invalid angle value " + angle.ToString()); }
public void FlipVertically() { if((this.FlipMode & FlipMode.Vertical) == FlipMode.Vertical) this.flipMode ^= FlipMode.Vertical; else this.flipMode |= FlipMode.Vertical; }
/// <summary> /// 2次元配列を垂直,水平,または両軸で反転する /// </summary> /// <param name="src">入力配列</param> /// <param name="dst">出力配列.もしnullであれば,反転はインプレースモードで行われる</param> /// <param name="flipMode">配列の反転方法の指定</param> #else /// <summary> /// Flip a 2D array around vertical, horizontal or both axises /// </summary> /// <param name="src">Source array. </param> /// <param name="dst">Destination array. If dst = null the flipping is done in-place. </param> /// <param name="flipMode">Specifies how to flip the array.</param> #endif public static void Flip(CvArr src, CvArr dst, FlipMode flipMode) { if (src == null) { throw new ArgumentNullException("src"); } IntPtr dstPtr = (dst == null) ? IntPtr.Zero : dst.CvPtr; NativeMethods.cvFlip(src.CvPtr, dstPtr, flipMode); }
/// <summary> /// Flips (reflects the image) either vertical or horizontal. /// </summary> /// <param name="bmp">The WriteableBitmap.</param> /// <param name="flipMode">The flip mode.</param> /// <returns>A new WriteableBitmap that is a flipped version of the input.</returns> public static WriteableBitmap Flip(this WriteableBitmap bmp, FlipMode flipMode) { using (var context = bmp.GetBitmapContext()) { // Use refs for faster access (really important!) speeds up a lot! var w = context.Width; var h = context.Height; var p = context.Pixels; var i = 0; WriteableBitmap result = null; if (flipMode == FlipMode.Horizontal) { result = BitmapFactory.New(w, h); using (var destContext = result.GetBitmapContext()) { var rp = destContext.Pixels; for (var y = h - 1; y >= 0; y--) { for (var x = 0; x < w; x++) { var srcInd = y * w + x; rp[i] = p[srcInd]; i++; } } } } else if (flipMode == FlipMode.Vertical) { result = BitmapFactory.New(w, h); using (var destContext = result.GetBitmapContext()) { var rp = destContext.Pixels; for (var y = 0; y < h; y++) { for (var x = w - 1; x >= 0; x--) { var srcInd = y * w + x; rp[i] = p[srcInd]; i++; } } } } return result; } }
/// <summary> /// 2次元配列を垂直,水平,または両軸で反転する. cvFlipのエイリアス. /// </summary> /// <param name="src">入力配列</param> /// <param name="dst">出力配列.もしnullであれば,反転はインプレースモードで行われる</param> /// <param name="flipMode">配列の反転方法の指定</param> #else /// <summary> /// Flip a 2D array around vertical, horizontal or both axises /// </summary> /// <param name="src">Source array. </param> /// <param name="dst">Destination array. If dst = null the flipping is done in-place. </param> /// <param name="flipMode">Specifies how to flip the array.</param> #endif public static void Mirror(CvArr src, CvArr dst, FlipMode flipMode) { Flip(src, dst, flipMode); }
/// <summary> /// Flips (reflects the image) eiter vertical or horizontal. /// </summary> /// <param name="bmp">The WriteableBitmap.</param> /// <param name="flipMode">The flip mode.</param> /// <returns>A new WriteableBitmap that is a flipped version of the input.</returns> public static WriteableBitmap Flip(this WriteableBitmap bmp, FlipMode flipMode) { // Use refs for faster access (really important!) speeds up a lot! var w = bmp.PixelWidth; var h = bmp.PixelHeight; var p = bmp.Pixels; var i = 0; WriteableBitmap result = null; if (flipMode == FlipMode.Horizontal) { result = new WriteableBitmap(w, h); var rp = result.Pixels; for (var y = h - 1; y >= 0; y--) { for (var x = 0; x < w; x++) { var srcInd = y * w + x; rp[i] = p[srcInd]; i++; } } } else if (flipMode == FlipMode.Vertical) { result = new WriteableBitmap(w, h); var rp = result.Pixels; for (var y = 0; y < h; y++) { for (var x = w - 1; x >= 0; x--) { var srcInd = y * w + x; rp[i] = p[srcInd]; i++; } } } return result; }
/// <summary> /// Creates a new instance of the MeeGen.Shape class /// </summary> /// <param name="handle"> /// The Rsvg.Handle that contains the image data for this instance /// A <see cref="Handle"/> /// </param> /// <param name="pos"> /// The starting position of the new shape /// A <see cref="Point"/> /// </param> public Shape(Handle handle, Point pos) { this.position = pos; this.svgHandle = handle; this.size = new Size(this.svgHandle.Dimensions.Width, this.svgHandle.Dimensions.Height); this.zoom = 1d; this.rotation = 0d; this.selected = false; this.flipMode = FlipMode.None; if(handle.BaseUri.Length > 0) { StreamReader reader = new StreamReader(handle.BaseUri.Substring(7)); svgContent = reader.ReadToEnd(); reader.Close(); } this.svgDoc = new XmlDocument(); svgDoc.LoadXml(svgContent); this.colorizeItems = this.ParseMetadata(); }