Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ SaveAsImage()

void Microsoft.Xna.Framework.Graphics.Texture2D.SaveAsImage ( Stream stream,
SharedConstants::XnaImageFormat __unnamed001,
int width,
int height )
inlineprivate

Definition at line 446 of file Texture2D.cs.

447 {
448 if (stream == null)
449 {
450 throw new ArgumentNullException("stream", FrameworkResources.NullNotAllowed);
451 }
452 if (!stream.CanWrite)
453 {
454 throw new ArgumentException("stream");
455 }
456 if (__unnamed001 != 0 && __unnamed001 != (SharedConstants.XnaImageFormat)2)
457 {
458 throw new ArgumentException("format");
459 }
460 SurfaceFormat format = _format;
461 Color[] array2;
462 int num;
463 int height3;
464 int width3;
465 switch (format)
466 {
467 case SurfaceFormat.Color:
468 {
469 int width2 = _width;
470 array2 = new Color[_height * width2];
471 GetData(array2);
472 goto IL_01da;
473 }
474 case SurfaceFormat.Bgr565:
475 array2 = GetDataAsColor<Bgr565>();
476 goto IL_01da;
477 case SurfaceFormat.Bgra5551:
478 array2 = GetDataAsColor<Bgra5551>();
479 goto IL_01da;
480 case SurfaceFormat.Bgra4444:
481 array2 = GetDataAsColor<Bgra4444>();
482 goto IL_01da;
483 case SurfaceFormat.NormalizedByte2:
484 array2 = GetDataAsColor<NormalizedByte2>();
485 goto IL_01da;
486 case SurfaceFormat.NormalizedByte4:
487 array2 = GetDataAsColor<NormalizedByte4>();
488 goto IL_01da;
489 case SurfaceFormat.Rgba1010102:
490 array2 = GetDataAsColor<Rgba1010102>();
491 goto IL_01da;
492 case SurfaceFormat.Rg32:
493 array2 = GetDataAsColor<Rg32>();
494 goto IL_01da;
495 case SurfaceFormat.Rgba64:
496 array2 = GetDataAsColor<Rgba64>();
497 goto IL_01da;
498 case SurfaceFormat.Alpha8:
499 array2 = GetDataAsColor<Alpha8>();
500 goto IL_01da;
501 case SurfaceFormat.HalfSingle:
502 array2 = GetDataAsColor<HalfSingle>();
503 goto IL_01da;
504 case SurfaceFormat.HalfVector2:
505 array2 = GetDataAsColor<HalfVector2>();
506 goto IL_01da;
507 case SurfaceFormat.HalfVector4:
508 array2 = GetDataAsColor<HalfVector4>();
509 goto IL_01da;
510 case SurfaceFormat.HdrBlendable:
511 array2 = GetDataAsColor<HalfVector4>();
512 goto IL_01da;
513 case SurfaceFormat.Single:
514 array2 = GetDataAsColor<float>(_003CModule_003E._003FA0x8419bba8_002ESingleToColor);
515 goto IL_01da;
516 case SurfaceFormat.Vector2:
517 array2 = GetDataAsColor<Vector2>(_003CModule_003E._003FA0x8419bba8_002EVector2ToColor);
518 goto IL_01da;
519 case SurfaceFormat.Vector4:
520 array2 = GetDataAsColor<Vector4>(_003CModule_003E._003FA0x8419bba8_002EVector4ToColor);
521 goto IL_01da;
522 case SurfaceFormat.Dxt1:
523 case SurfaceFormat.Dxt3:
524 case SurfaceFormat.Dxt5:
525 {
526 SurfaceFormat format2 = format;
527 int height2 = _height;
528 DxtDecoder dxtDecoder = new DxtDecoder(_width, height2, format2);
529 byte[] array = new byte[dxtDecoder.PackedDataSize];
530 GetData(array);
531 array2 = dxtDecoder.Decode(array);
532 goto IL_01da;
533 }
534 default:
535 {
536 throw new InvalidOperationException();
537 }
538 IL_01da:
539 num = 0;
540 if (0 < (nint)array2.LongLength)
541 {
542 do
543 {
544 if (array2[num].A == 0)
545 {
546 Color transparent = Color.Transparent;
547 array2[num] = transparent;
548 }
549 num++;
550 }
551 while (num < (nint)array2.LongLength);
552 }
553 height3 = _height;
554 width3 = _width;
555 using (ImageStream imageStream = ImageStream.FromColors(array2, width3, height3, (XnaImageFormat)__unnamed001, width, height))
556 {
557 byte[] array3 = new BinaryReader(imageStream).ReadBytes((int)imageStream.Length);
558 stream.Write(array3, 0, array3.Length);
559 break;
560 }
561 }
562 }
virtual byte[] ReadBytes(int count)

References Microsoft.Xna.Framework.Color.Color(), Microsoft.Xna.Framework.Graphics.Texture._format, Microsoft.Xna.Framework.Graphics.Texture2D._height, Microsoft.Xna.Framework.Graphics.Texture2D._width, System.A, System.array, Microsoft.Xna.Framework.Graphics.DxtDecoder.Decode(), System.format, Microsoft.Xna.Framework.FrameworkResources.NullNotAllowed, Microsoft.Xna.Framework.Graphics.DxtDecoder.PackedDataSize, System.IO.BinaryReader.ReadBytes(), System.stream, and Microsoft.Xna.Framework.Color.Transparent.

Referenced by Microsoft.Xna.Framework.Graphics.Texture2D.SaveAsJpeg(), and Microsoft.Xna.Framework.Graphics.Texture2D.SaveAsPng().