mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-10-22 14:06:04 -04:00
60 lines
1.4 KiB
C#
60 lines
1.4 KiB
C#
// Copyright 2014-2017 ClassicalSharp | Licensed under BSD-3
|
|
using System;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
#if ANDROID
|
|
using Android.Graphics;
|
|
#else
|
|
using System.Drawing.Imaging;
|
|
#endif
|
|
|
|
namespace ClassicalSharp {
|
|
|
|
public static class Platform {
|
|
|
|
public static Bitmap ReadBmp32Bpp(IDrawer2D drawer, byte[] data) {
|
|
return ReadBmp32Bpp(drawer, new MemoryStream(data));
|
|
}
|
|
|
|
public static Bitmap ReadBmp32Bpp(IDrawer2D drawer, Stream src) {
|
|
Bitmap bmp = ReadBmp(src);
|
|
if (!Is32Bpp(bmp)) drawer.ConvertTo32Bpp(ref bmp);
|
|
return bmp;
|
|
}
|
|
|
|
public static Bitmap CreateBmp(int width, int height) {
|
|
#if !ANDROID
|
|
return new Bitmap(width, height);
|
|
#else
|
|
return Bitmap.CreateBitmap(width, height, Bitmap.Config.Argb8888);
|
|
#endif
|
|
}
|
|
|
|
public static Bitmap ReadBmp(Stream src) {
|
|
#if !ANDROID
|
|
return new Bitmap(src);
|
|
#else
|
|
return BitmapFactory.DecodeStream(src);
|
|
#endif
|
|
}
|
|
|
|
public static void WriteBmp(Bitmap bmp, Stream dst) {
|
|
#if !ANDROID
|
|
bmp.Save(dst, ImageFormat.Png);
|
|
#else
|
|
bmp.Compress(Bitmap.CompressFormat.Png, 100, dst);
|
|
#endif
|
|
}
|
|
|
|
public static bool Is32Bpp(Bitmap bmp) {
|
|
#if !ANDROID
|
|
PixelFormat format = bmp.PixelFormat;
|
|
return format == PixelFormat.Format32bppRgb || format == PixelFormat.Format32bppArgb;
|
|
#else
|
|
Bitmap.Config config = bmp.GetConfig();
|
|
return config != null && config == Bitmap.Config.Argb8888;
|
|
#endif
|
|
}
|
|
}
|
|
}
|