mirror of
https://github.com/kwsch/NHSE.git
synced 2026-09-09 03:35:27 -05:00
Minor clean
Reduce array get counts by 16 (from 17->1)
This commit is contained in:
@@ -1,6 +1,4 @@
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Runtime.InteropServices;
|
||||
using NHSE.Core;
|
||||
|
||||
namespace NHSE.Sprites
|
||||
@@ -30,11 +28,7 @@ public Bitmap GetBitmapLayer(FieldItemLayer layer)
|
||||
}
|
||||
}
|
||||
|
||||
var result = new Bitmap(width, height, PixelFormat.Format32bppArgb);
|
||||
var bData = result.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
|
||||
Marshal.Copy(bmpData, 0, bData.Scan0, bmpData.Length);
|
||||
result.UnlockBits(bData);
|
||||
return result;
|
||||
return ImageUtil.GetBitmap(bmpData, width, height);
|
||||
}
|
||||
|
||||
private static int[] GetBitmapLayerAcre(FieldItemLayer layer, int x0, int y0, out int width, out int height)
|
||||
@@ -62,13 +56,19 @@ private static int[] GetBitmapLayerAcre(FieldItemLayer layer, int x0, int y0, ou
|
||||
public Bitmap GetBitmapLayerAcre(FieldItemLayer layer, int x0, int y0, int scale)
|
||||
{
|
||||
var map = GetBitmapLayerAcre(layer, x0, y0, out int mh, out int mw);
|
||||
var data = ImageUtil.ScalePixelImage(map, scale, mw, mh, out var fw, out var fh);
|
||||
var data = ImageUtil.ScalePixelImage(map, scale, mw, mh, out var w, out var h);
|
||||
|
||||
// draw symbols over special items now?
|
||||
|
||||
// Slap on a grid
|
||||
var w = fw;
|
||||
var h = fh;
|
||||
DrawGrid(data, w, h, scale);
|
||||
|
||||
// Return final data
|
||||
return ImageUtil.GetBitmap(data, w, h);
|
||||
}
|
||||
|
||||
private static void DrawGrid(int[] data, int w, int h, int scale)
|
||||
{
|
||||
const int grid = -0x777778; // 0xFF888888u
|
||||
|
||||
// Horizontal Lines
|
||||
@@ -90,9 +90,6 @@ public Bitmap GetBitmapLayerAcre(FieldItemLayer layer, int x0, int y0, int scale
|
||||
data[index] = grid;
|
||||
}
|
||||
}
|
||||
|
||||
// Return final data
|
||||
return ImageUtil.GetBitmap(data, fw, fh);
|
||||
}
|
||||
|
||||
public Bitmap GetBitmapLayer(FieldItemLayer layer, int x, int y, int scale = 1)
|
||||
|
||||
@@ -71,13 +71,17 @@ public static int[] ScalePixelImage(int[] data, int scale, int w, int h, out int
|
||||
// For each pixel, copy to the X indexes, then block copy the row to the other rows.
|
||||
for (int y = 0, i = 0; y < fH; y += scale)
|
||||
{
|
||||
// Fill the X pixels
|
||||
var baseIndex = y * fW;
|
||||
for (int x = 0; x < fW; x += scale, i++)
|
||||
{
|
||||
var v = data[i];
|
||||
var xi = baseIndex + x;
|
||||
for (int x1 = 0; x1 < scale; x1++)
|
||||
scaled[baseIndex + x + x1] = data[i];
|
||||
scaled[xi + x1] = v;
|
||||
}
|
||||
|
||||
// Copy entire pixel row down
|
||||
for (int y1 = 1; y1 < scale; y1++)
|
||||
Array.Copy(scaled, baseIndex, scaled, baseIndex + (y1 * fW), fW);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user