/*
* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the License);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.IO;
namespace ElmSharp.Test.Wearable
{
public class ImageTest1 : WearableTestCase
{
public override string TestName => "ImageTest1";
public override string TestDescription => "To test basic operation of Image";
Image image;
Label lbInfo;
string[] btn_names = new string[] {"File1", "File2", "Uri", "Strm", "FileA1", "FileA2", "UriA", "StrmA"};
public override void Run(Window window)
{
Rect square = window.GetInnerSquare();
Button[] btns = new Button[8];
Size btnSize = new Size(square.Width / 4 - 2, square.Height / 5 - 1);
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 4; j++)
{
btns[i * 4 + j] = new Button(window)
{
Text = "" + btn_names[i * 4 + j] + "",
};
int x = j * btnSize.Width + j *2;
int y = i * btnSize.Height + i;
btns[i * 4 + j].Geometry = new Rect(square.X + x, square.Y + y, btnSize.Width, btnSize.Height);
btns[i * 4 + j].Show();
}
}
lbInfo = new Label(window)
{
Color = Color.White,
AlignmentX = -1,
AlignmentY = 0,
WeightX = 1
};
lbInfo.Show();
lbInfo.Geometry = new Rect(square.X, square.Y + square.Height, square.Width, 15);
image = new Image(window)
{
IsFixedAspect = true,
AlignmentX = -1,
AlignmentY = -1,
};
image.Show();
image.Load(Path.Combine(TestRunner.ResourceDir, "picture.png"));
image.Geometry = new Rect(square.X, square.Y + btnSize.Height * 2 + 2 , square.Width, btnSize.Height * 3);
image.Clicked += (s, e) =>
{
Console.WriteLine("Image has been clicked. (IsFixedAspect = {0}", image.IsFixedAspect);
image.IsFixedAspect = image.IsFixedAspect == true ? false : true;
};
btns[0].Clicked += (s, e) => LoadFile("TED/large/a.jpg");
btns[1].Clicked += (s, e) => LoadFile("TED/large/b.jpg");
btns[2].Clicked += (s, e) => LoadUri("http://pe.tedcdn.com/images/ted/2e306b9655267cee35e45688ace775590b820510_615x461.jpg");
btns[3].Clicked += (s, e) => LoadStream(new FileStream(Path.Combine(TestRunner.ResourceDir, "TED/large/c.jpg"), FileMode.Open, FileAccess.Read));
btns[4].Clicked += (s, e) => LoadFileAsync("TED/large/d.jpg");
btns[5].Clicked += (s, e) => LoadFileAsync("TED/large/e.jpg");
btns[6].Clicked += (s, e) => LoadUriAsync("http://pe.tedcdn.com/images/ted/2e306b9655267cee35e45688ace775590b820510_615x461.jpg");
btns[7].Clicked += (s, e) => LoadStreamAsync(new FileStream(Path.Combine(TestRunner.ResourceDir, "TED/large/f.jpg"), FileMode.Open, FileAccess.Read));
}
void LoadFile(string file)
{
bool ret = image.Load(Path.Combine(TestRunner.ResourceDir, file));
if (ret)
UpdateLabelText(lbInfo, image.File);
else
UpdateLabelText(lbInfo, "Loading Failed.");
}
void LoadUri(string uri)
{
bool ret = image.Load(uri);
if (ret)
UpdateLabelText(lbInfo, image.File);
else
UpdateLabelText(lbInfo, "Loading Failed.");
}
void LoadStream(Stream stream)
{
bool ret = image.Load(stream);
if (ret)
UpdateLabelText(lbInfo, image.File);
else
UpdateLabelText(lbInfo, "Loading Failed.");
}
async void LoadFileAsync(string file)
{
var ret = await image.LoadAsync(Path.Combine(TestRunner.ResourceDir, file));
if (ret)
UpdateLabelText(lbInfo, image.File);
else
UpdateLabelText(lbInfo, "Loading Failed.");
}
async void LoadUriAsync(string uri)
{
var ret = await image.LoadAsync(uri);
if (ret)
UpdateLabelText(lbInfo, image.File);
else
UpdateLabelText(lbInfo, "Loading Failed.");
}
async void LoadStreamAsync(Stream stream)
{
var ret = await image.LoadAsync(stream);
if (ret)
UpdateLabelText(lbInfo, image.File);
else
UpdateLabelText(lbInfo, "Loading Failed.");
}
void UpdateLabelText(Label lable, string text)
{
lable.Text = "" + text + "";
}
}
}