Rev 1397 |
Rev 1399 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using Tao.OpenGl;
using BauzoidNET.app;
using BauzoidNET.graphics.sprite;
using ShapeEditor.file;
namespace ShapeEditor
{
public partial class MainForm
: Form
{
public static BauzoidApp App
= null;
private Document mDocument
= null;
/*private BauzoidNET.graphics.sprite.SimpleSprite mSprite = null;
private BauzoidNET.graphics.texture.Framebuffer mOffscreen = null;
private BauzoidNET.graphics.model.SimpleGeometry mQuad = null;
private BauzoidNET.graphics.shader.ShaderProgram mShader = null;
private BauzoidNET.graphics.shader.ShaderUniform mTextureHandle = null;*/
public MainForm
()
{
InitializeComponent
();
}
private void MainForm_Load
(object sender, EventArgs e
)
{
App
= new BauzoidApp
();
App
.init(mGlView
.Width, mGlView
.Height);
/*mQuad = BauzoidNET.graphics.model.GeometryUtil.createQuad(mApp.getGraphics(), 0.0f, 0, 100.0f, 100.0f);
//mShader = ShaderUtil.createShaderFromFile(mApp.getGraphics(), Gdx.files.internal("data/shaders/offscreen.vert"),
//Gdx.files.internal("data/shaders/offscreen.frag"));
mShader = BauzoidNET.graphics.shader.ShaderUtil.createShaderFromFile(mApp.getGraphics(), "data/shaders/offscreen.vert", "data/shaders/offscreen.frag");
if (mShader != null)
{
mTextureHandle = mShader.getUniform("uDiffuse");
}
mSprite = new BauzoidNET.graphics.sprite.SimpleSprite(mApp.getGraphics(), "data/textures/test.png");
mSprite.init();
mSprite.getSpriteTransform().x = 10;
mSprite.getSpriteTransform().y = 10;
mSprite.getSpriteTransform().w = 300;
mSprite.getSpriteTransform().h = 300;
mSprite.getSpriteTransform().pivotX = 0;
mSprite.getSpriteTransform().pivotY = 0;
mOffscreen = new BauzoidNET.graphics.texture.Framebuffer(mApp.getGraphics(), 128, 128, false);*/
String s
= Path
.Combine(Application
.StartupPath,
@"..\\..\\..\\..\\..\\BauzoidApps\\BurutaruZ_v2\\burutaru-android\\assets\\data\\textures");
openFileDialog
.InitialDirectory = Path
.GetFullPath(s
);
openSpriteDialog
.InitialDirectory = Path
.GetFullPath(s
);
saveFileDialog
.InitialDirectory = Path
.GetFullPath(s
);
mDocument
= new Document
(this);
mDocument
.NewDocument();
}
private void MainForm_FormClosing
(object sender, FormClosingEventArgs e
)
{
if (!CheckDocumentModifiedAndSave
())
{
e
.Cancel = true;
return;
}
/*
if (mSprite != null)
{
mSprite.dispose();
mSprite = null;
}
if (mOffscreen != null)
{
mOffscreen.dispose();
mOffscreen = null;
}
if (mQuad != null)
{
mQuad.dispose();
mQuad = null;
}*/
if (App
!= null)
App
.exit();
mDocument
= null;
}
private void GlView_Paint
(object sender, PaintEventArgs e
)
{
//mOffscreen.activate();
/*mApp.getGraphics().clear(0.15f, 0.15f, 0.2f, 0);
mApp.getRenderStates().projection.setOrtho(
0.0f,
480,
480,
0.0f,
0.0f,
1.0f
);*/
//mSprite.render();
//mOffscreen.deactivate();
//mApp.getGraphics().clear(0, 0.5f, 0.3f, 0);
//Gl.glViewport(0, 0, mGlView.Width, mGlView.Height);
App
.getGraphics().clear(0
.3f, 0
.3f, 0
.35f,
0);
App
.getRenderStates().projection.setOrtho(
0
.0f,
App
.getGraphics().getWidth(),
App
.getGraphics().getHeight(),
0
.0f,
0
.0f,
1
.0f
);
//mDocument.Render();
SpriteInstance s
= mDocument
.GetSpriteInstance();
s
.transform.x = mGlView
.Width / 2;
s
.transform.y = mGlView
.Height / 2;
s
.transform.w = 100;
s
.transform.h = 100;
s
.transform.centerPivot();
s
.render();
/*BauzoidNET.graphics.renderstates.RenderStates rs = mApp.getGraphics().renderStates;
rs.view.identity();
rs.model.identity();*/
/* mShader.activate();
{
mTextureHandle.set(0);
rs.getTextureStage(0).bindTexture(mOffscreen.getColorTexture());
rs.blending.setEnabled(false);
rs.culling.setEnabled(false);
rs.depthTest.setEnabled(false);
rs.activate();
{
mQuad.render();
}
rs.deactivate();
rs.popModelMatrix();
rs.popViewMatrix();
}
mShader.deactivate();*/
}
private void GlView_Resize
(object sender, EventArgs e
)
{
if (App
!= null)
App
.getGraphics().updateSurfaceDimensions(mGlView
.Width, mGlView
.Height);
}
private void FileNew_Click
(object sender, EventArgs e
)
{
if (!CheckDocumentModifiedAndSave
())
return;
// new file
mDocument
.NewDocument();
}
private void FileOpen_Click
(object sender, EventArgs e
)
{
if (!CheckDocumentModifiedAndSave
())
return;
// open file
PerformFileOpen
();
}
/** Check if the document has been modified, and if yes, ask for saving.
* Returns true if everything is ok and the operation should be continued, or false when Cancel has been pressed. */
private bool CheckDocumentModifiedAndSave
()
{
if (mDocument
.IsDirty())
{
switch (MessageBox
.Show("File has been modified. Save?",
"New File", MessageBoxButtons
.YesNoCancel, MessageBoxIcon
.Question))
{
case DialogResult
.Yes:
if (!PerformFileSave
())
return false;
break;
case DialogResult
.No:
break;
case DialogResult
.Cancel:
return false;
}
}
return true;
}
/** Perform a file save operation with a file save dialog.
* Returns false if the operation has been canceled. */
private bool PerformFileSave
(bool alwaysShowDialog
= false)
{
if (alwaysShowDialog
|| !mDocument
.IsFilenameSet())
{
if (saveFileDialog
.ShowDialog() == DialogResult
.Cancel)
return false;
mDocument
.SetFilename(saveFileDialog
.FileName);
}
return mDocument
.SaveDocument();
}
/** Perform a file open operation.
* Return false if the operation was canceled. */
private bool PerformFileOpen
()
{
if (openFileDialog
.ShowDialog() == DialogResult
.Cancel)
return false;
return mDocument
.LoadDocument(openFileDialog
.FileName);
}
private void FileSave_Click
(object sender, EventArgs e
)
{
PerformFileSave
();
}
private void FileSaveAs_Click
(object sender, EventArgs e
)
{
PerformFileSave
(true);
}
private void FileExit_Click
(object sender, EventArgs e
)
{
Close
();
}
private void ChangeSprite_Click
(object sender, EventArgs e
)
{
if (openSpriteDialog
.ShowDialog() == DialogResult
.OK)
{
mDocument
.ChangeSprite(openSpriteDialog
.FileName);
mGlView
.Invalidate();
}
}
}
}