mirror of
https://github.com/Gericom/EveryFileExplorer.git
synced 2025-06-19 01:15:36 -04:00
211 lines
7.2 KiB
C#
211 lines
7.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.Linq;
|
|
using LibEveryFileExplorer.Files;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using _3DS.UI;
|
|
using _3DS.GPU;
|
|
using LibEveryFileExplorer.IO;
|
|
using System.Timers;
|
|
|
|
namespace _3DS.UI
|
|
{
|
|
public partial class ThemeViewer : Form
|
|
{
|
|
ThemeFile theme;
|
|
public ThemeViewer(ThemeFile themeFile)
|
|
{
|
|
theme = themeFile;
|
|
InitializeComponent();
|
|
tabControl1.TabPages.Remove(tabPage4);
|
|
}
|
|
|
|
private void ThemeViewer_Load(object sender, EventArgs e)
|
|
{
|
|
loadImages();
|
|
backgroundMusicCheckbox.Checked = theme.header.backgroundMusicEnabled;
|
|
}
|
|
|
|
private void loadImages()
|
|
{
|
|
if (theme.header.topScreenDrawType == 2)
|
|
{//when using alpha textures the image appears to be warped?
|
|
topBackgroundImage.BackColor = Color.Aqua;//TODO use actual gradient data
|
|
topBackgroundImage.BackgroundImage = theme.GetBackgroundAlphaTexture();
|
|
topBackgroundImage.Image = theme.GetOverlayAlphaTexture();
|
|
}
|
|
else
|
|
{
|
|
topBackgroundImage.Image = theme.GetTopTexture(clampTextureSizeCheckBox.Checked);
|
|
simTopBackgroundImage.Image = topBackgroundImage.Image;
|
|
}
|
|
|
|
bottomBackgroundImage.Image = theme.GetBottomTexture(clampTextureSizeCheckBox.Checked);
|
|
simBottomBackgroundImage.Image = bottomBackgroundImage.Image;
|
|
|
|
if (theme.header.useFolderTextures)
|
|
{
|
|
folderOpenImage.Image = theme.GetOpenFolderTexture(clampTextureSizeCheckBox.Checked);
|
|
folderClosedImage.Image = theme.GetClosedFolderTexture(clampTextureSizeCheckBox.Checked);
|
|
}
|
|
if (theme.header.useIconBorders)
|
|
{
|
|
iconBorder48pxImage.Image = theme.GetIconBorder48px(clampTextureSizeCheckBox.Checked);
|
|
iconBorder24pxImage.Image = theme.GetIconBorder24px(clampTextureSizeCheckBox.Checked);
|
|
}
|
|
|
|
if (theme.header.topScreenDrawType == 1)//Solid
|
|
topBackgroundImage.BackColor = theme.topSolidColor;
|
|
|
|
if (theme.header.bottomScreenDrawType == 1)//Solid
|
|
bottomBackgroundImage.BackColor = theme.bottomSolidColor;
|
|
|
|
if (theme.header.bottomScreenFrameType == 2 || theme.header.bottomScreenFrameType == 4)
|
|
{
|
|
Rectangle frame0rect = new Rectangle(0, 0, 320, theme.bottomClampHeight);
|
|
Rectangle frame1rect = new Rectangle(320, 0, 320, theme.bottomClampHeight);
|
|
Rectangle frame2rect = new Rectangle(640, 0, 320, theme.bottomClampHeight);
|
|
|
|
Bitmap map = new Bitmap(960, 240);//new Bitmap(bottomBackgroundImage.Image);
|
|
bottomBackgroundImage.DrawToBitmap(map, new Rectangle(0,0,960,240));
|
|
bottomFrame0 = map.Clone(frame0rect, map.PixelFormat);
|
|
bottomFrame1 = map.Clone(frame1rect, map.PixelFormat);
|
|
bottomFrame2 = map.Clone(frame2rect, map.PixelFormat);
|
|
|
|
}
|
|
|
|
System.Timers.Timer timer = new System.Timers.Timer();
|
|
timer.Elapsed += new System.Timers.ElapsedEventHandler(onTimedEvent);
|
|
timer.Interval = 500;
|
|
timer.Enabled = true;
|
|
}
|
|
|
|
|
|
Bitmap bottomFrame0;
|
|
Bitmap bottomFrame1;
|
|
Bitmap bottomFrame2;
|
|
int frameptr = 0;
|
|
int testptr = 0;
|
|
private void onTimedEvent(object source, ElapsedEventArgs e)
|
|
{//normally only animates on right/left movement
|
|
|
|
//TESTING
|
|
if (theme.header.topScreenDrawType == 2)
|
|
{
|
|
if (testptr == 2)
|
|
testptr = 0;
|
|
if (testptr == 0)
|
|
topBackgroundImage.Image = theme.GetOverlayAlphaTexture();
|
|
if (testptr == 1)
|
|
topBackgroundImage.Image = theme.GetBackgroundAlphaTexture();
|
|
testptr++;
|
|
|
|
}
|
|
|
|
if (theme.header.bottomScreenFrameType == 2)
|
|
{
|
|
if (frameptr == 3)
|
|
frameptr = 0;
|
|
|
|
if (frameptr == 0)
|
|
simBottomBackgroundImage.Image = bottomFrame0;
|
|
|
|
if (frameptr == 1)
|
|
simBottomBackgroundImage.Image = bottomFrame1;
|
|
|
|
if (frameptr == 2)
|
|
simBottomBackgroundImage.Image = bottomFrame2;
|
|
}
|
|
else if (theme.header.bottomScreenFrameType == 4)
|
|
{
|
|
if (frameptr == 4)
|
|
frameptr = 0;
|
|
|
|
if (frameptr == 0)
|
|
simBottomBackgroundImage.Image = bottomFrame0;
|
|
|
|
if (frameptr == 1)
|
|
simBottomBackgroundImage.Image = bottomFrame1;
|
|
|
|
if (frameptr == 2)
|
|
simBottomBackgroundImage.Image = bottomFrame2;
|
|
|
|
if (frameptr == 3)
|
|
simBottomBackgroundImage.Image = bottomFrame1;
|
|
}
|
|
|
|
|
|
frameptr++;
|
|
}
|
|
|
|
|
|
|
|
private void bitmapFromPngSelect(ref byte[] texturedata, Textures.ImageFormat imageFormat, int fullWidth, int fullHeight, int displayWidth, int displayHeight)
|
|
{
|
|
MessageBox.Show("Please choose a " + fullWidth + "x" + fullHeight + " size image, only " + displayWidth + "x" + displayHeight + " will be displayed on the 3ds!");
|
|
OpenFileDialog dialog = new OpenFileDialog();
|
|
dialog.Filter = "PNG Files (*.png)|*.png";
|
|
|
|
DialogResult result = dialog.ShowDialog();
|
|
|
|
Console.WriteLine(result.ToString() + " " + dialog.FileName.Length);
|
|
if (result == DialogResult.OK && dialog.FileName.Length > 0)
|
|
{
|
|
Bitmap bitmap = new Bitmap(new MemoryStream(File.ReadAllBytes(dialog.FileName)));
|
|
texturedata = Textures.FromBitmap(bitmap, imageFormat, true);
|
|
loadImages();
|
|
}
|
|
}
|
|
|
|
private void folderOpenImage_Click(object sender, EventArgs e)
|
|
{
|
|
if (theme.header.useFolderTextures)
|
|
bitmapFromPngSelect(ref theme.openFolderTexture, Textures.ImageFormat.RGB8, theme.folderWidth, theme.folderHeight, 82, 64);
|
|
}
|
|
private void folderClosedImage_Click(object sender, EventArgs e)
|
|
{
|
|
if (theme.header.useFolderTextures)
|
|
bitmapFromPngSelect(ref theme.closedFolderTexture, Textures.ImageFormat.RGB8, theme.folderWidth, theme.folderHeight, 74, 64);
|
|
}
|
|
private void topBackgroundImage_Click(object sender, EventArgs e)
|
|
{
|
|
bitmapFromPngSelect(ref theme.topScreenTexture, Textures.ImageFormat.RGB565, theme.topWidth, theme.topHeight, theme.topClampWidth, theme.topClampHeight);
|
|
}
|
|
|
|
private void bottomBackgroundImage_Click(object sender, EventArgs e)
|
|
{
|
|
bitmapFromPngSelect(ref theme.bottomScreenTexture, Textures.ImageFormat.RGB565, theme.bottomWidth, theme.bottomHeight, theme.bottomClampWidth, theme.bottomClampHeight);
|
|
}
|
|
|
|
private void iconBorder48pxImage_Click(object sender, EventArgs e)
|
|
{
|
|
if (theme.header.useIconBorders)
|
|
bitmapFromPngSelect(ref theme.iconBorder48pxTexture, Textures.ImageFormat.RGB8, theme.iconBorder48pxWidth, theme.iconBorder48pxHeight, 36, 72);
|
|
}
|
|
|
|
private void iconBorder24pxImage_Click(object sender, EventArgs e)
|
|
{
|
|
if (theme.header.useIconBorders)
|
|
bitmapFromPngSelect(ref theme.iconBorder24pxTexture, Textures.ImageFormat.RGB8, theme.iconBorder24pxWidth, theme.iconBorder24pxHeight, 25, 50);
|
|
}
|
|
|
|
private void clampTextureSizeCheckBox_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
loadImages();
|
|
}
|
|
|
|
private void backgroundMusicCheckbox_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
theme.header.backgroundMusicEnabled = backgroundMusicCheckbox.Checked;
|
|
}
|
|
|
|
}
|
|
}
|