efl/src/examples/evas/evas_mono_image2.cs

84 lines
2.2 KiB
C#

using System;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
class TestMain
{
static int WIDTH = 320;
static int HEIGHT = 240;
static void Main(string[] args)
{
Efl.All.Init();
Efl.Loop loop = new Efl.Loop();
EcoreEvas ecore_evas = new EcoreEvas();
Eina.Size2D size = new Eina.Size2D();
Eina.Position2D pos = new Eina.Position2D();
Efl.Canvas.Object canvas = ecore_evas.canvas;
canvas.SetVisible(true);
Efl.Canvas.Rectangle bg = new Efl.Canvas.Rectangle(canvas);
bg.SetColor(255, 255, 255, 255);
pos.X = 0;
pos.Y = 0;
bg.SetPosition(pos);
size.W = WIDTH;
size.H = HEIGHT;
bg.SetSize(size);
bg.SetVisible(true);
string path = args[0];
Evas.Image logo = new Evas.Image(canvas);
logo.SetFillAuto(true);
// TODO add preloaded support (depends on events)
logo.SetFile(path, null);
size.W = WIDTH / 2;
size.H = HEIGHT / 2;
logo.SetSize(size);
// TODO add a bunch of key/mouse handlers
logo.SetVisible(true);
int[] pixels = new int[(WIDTH/4) * (HEIGHT / 4)];
System.Random generator = new System.Random();
for (int i = 0; i < pixels.Length; i++) {
pixels[i] = generator.Next();
}
Evas.Image noise_img = new Evas.Image(canvas);
size.W = WIDTH / 4;
size.H = HEIGHT / 4;
noise_img.SetSize(size);
// FIXME Add a way to set the pixels.
// noise_img.data_set(pixels);
noise_img.SetFillAuto(true);
pos.X = WIDTH * 5 / 8;
pos.Y = HEIGHT / 8;
noise_img.SetPosition(pos);
noise_img.SetVisible(true);
Console.WriteLine("Creating noise image with sizez %d, %d", WIDTH/4, HEIGHT/4);
Efl.Canvas.Proxy proxy_img = new Efl.Canvas.Proxy(canvas);
proxy_img.SetSource(noise_img);
pos.X = WIDTH / 2;
pos.Y = HEIGHT / 2;
proxy_img.SetPosition(pos);
size.W = WIDTH / 2;
size.H = HEIGHT / 2;
proxy_img.SetSize(size);
proxy_img.SetVisible(true);
loop.Begin();
}
}