class TestImagePage extends TestPageBase;

// if _RO_
// else
//#exec OBJ LOAD FILE=InterfaceContent.utx
// end if _RO_

var automated GUIImage i_Test;
var automated moComboBox co_Style, co_Align, co_Select, co_Render;
var automated GUINumericEdit nu_Width, nu_Height, nu_PortionX1, nu_PortionX2, nu_PortionY1, nu_PortionY2;
var automated GUIButton b_Add;
var automated GUILabel l_ImageSize;

var config array<string> Images;

function InitComponent(GUIController MyController, GUIComponent MyOwner)
{
	Super.InitComponent(MyController, MyOwner);

	Background = Controller.DefaultPens[1];
}

function bool InternalOnClick( GUIComponent Sender )
{
	local string S;
	local Material M;

	if ( Sender == b_Add )
	{
		S = co_Select.GetText();
		if ( co_Select.FindIndex(s) == -1 )
		{
			M = LoadTexture(S);
			if ( M != None )
			{
				co_Select.AddItem(S);
				Images[Images.Length] = S;
				SaveConfig();

				SetNewImage(S);
			}
		}
	}
	return true;
}

function InternalOnOpen()
{
	local int i;

	// Prepare the ComboBoxes
	co_Style.AddItem("Normal");
	co_Style.AddItem("Stretched");
	co_Style.AddItem("Scaled");
	co_Style.AddItem("Bound");
	co_Style.AddItem("Justified");
	co_Style.AddItem("PartialScaled");

	co_Align.AddItem("TopLeft");
	co_Align.AddItem("Center");
	co_Align.AddItem("BottomRight");

	co_Render.AddItem("None");
	co_Render.AddItem("Normal");
	co_Render.AddItem("Masked");
	co_Render.AddItem("Translucent");
	co_Render.AddItem("Modulated");
	co_Render.AddItem("Alpha");
	co_Render.AddItem("Additive");
	co_Render.AddItem("Subtractive");
	co_Render.AddItem("Particle");
	co_Render.AddItem("AlphaZ");

	for ( i = 0; i < Images.Length; i++ )
		co_Select.AddItem(Images[i]);

	SetNewImage(co_Select.MyComboBox.List.Get(True));
	co_Render.SetIndex(1);
	co_Style.SetIndex(0);
	co_Align.SetIndex(0);
	nu_PortionX1.SetValue(-1);
	nu_PortionY1.SetValue(-1);
	nu_PortionX2.SetValue(-1);
	nu_PortionY2.SetValue(-1);
}

function InternalOnRendered(Canvas C)
{
	if ( i_Test.bPositioned )
	{
		nu_Width.Value = string(i_Test.ActualWidth());
		nu_Height.Value = string(i_Test.ActualHeight());

		OnRendered=None;
	}
}

function OnNewImgStyle(GUIComponent Sender)
{
local string NewImgStyle;

	NewImgStyle = co_Style.GetText();
	switch ( NewImgStyle )
	{
	case "Normal":
		i_Test.ImageStyle = ISTY_Normal;
		break;

	case "Stretched":
		i_Test.ImageStyle = ISTY_Stretched;
		break;

	case "Scaled":
		i_Test.ImageStyle = ISTY_Scaled;
		break;

	case "Bound":
		i_Test.ImageStyle = ISTY_Bound;
		break;

	case "Justified":
		i_Test.ImageStyle = ISTY_Justified;
		break;

	case "PartialScaled":
		i_Test.ImageStyle = ISTY_PartialScaled;
		break;
	}
}

function InternalOnChange( GUIComponent Sender )
{
	if ( Sender == co_Render )
	{
		switch (co_Render.GetText())
		{
		case "None":
			i_Test.ImageRenderStyle = MSTY_None;
			break;

		case "Normal":
			i_Test.ImageRenderStyle = MSTY_Normal;
			break;

		case "Masked":
			i_Test.ImageRenderStyle = MSTY_Masked;
			break;

		case "Translucent":
			i_Test.ImageRenderStyle = MSTY_Translucent;
			break;

		case "Modulated":
			i_Test.ImageRenderStyle = MSTY_Modulated;
			break;

		case "Alpha":
			i_Test.ImageRenderStyle = MSTY_Alpha;
			break;

		case "Additive":
			i_Test.ImageRenderStyle = MSTY_Additive;
			break;

		case "Subtractive":
			i_Test.ImageRenderStyle = MSTY_Subtractive;
			break;

		case "Particle":
			i_Test.ImageRenderStyle = MSTY_Particle;
			break;

		case "AlphaZ":
			i_Test.ImageRenderStyle = MSTY_AlphaZ;
			break;
		}
	}
}

function OnNewImgAlign(GUIComponent Sender)
{
local string NewImgAlign;

	NewImgAlign = co_Align.GetText();
	if (NewImgAlign == "TopLeft")
		i_Test.ImageAlign = IMGA_TopLeft;
	else if (NewImgAlign == "Center")
		i_Test.ImageAlign = IMGA_Center;
	else if (NewImgAlign == "BottomRight")
		i_Test.ImageAlign = IMGA_BottomRight;
}

function OnNewImgSelect(GUIComponent Sender)
{
	local string S;

	s = co_Select.GetText();
	if ( co_Select.FindIndex(s) != -1 )
		SetNewImage(s);
}

function SetNewImage(string ImageName)
{
	i_Test.Image = LoadTexture(ImageName);
	if ( i_Test.Image != None )
		l_ImageSize.Caption =  i_Test.Image.MaterialUSize() $ "x" $ i_Test.Image.MaterialVSize();
}

function Material LoadTexture(string TextureFullName)
{
	return Material(DynamicLoadObject(TextureFullName, class'Material'));
}

function ResizeImage(GUIComponent Sender)
{
	if ( Sender == nu_Width )
		i_Test.WinWidth = i_Test.RelativeWidth(int(nu_Width.Value));

	else i_Test.WinHeight = i_Test.RelativeHeight(int(nu_Height.Value));
}

function ChangePortion(GUIComponent Sender)
{
	switch ( Sender )
	{
	case nu_PortionX1:
		i_Test.X1 = int(GUINumericEdit(Sender).Value);
		break;
	case nu_PortionX2:
		i_Test.X2 = int(GUINumericEdit(Sender).Value);
		break;
	case nu_PortionY1:
		i_Test.Y1 = int(GUINumericEdit(Sender).Value);
		break;
	case nu_PortionY2:
		i_Test.Y2 = int(GUINumericEdit(Sender).Value);
		break;
	}
}

defaultproperties
{
	OnRendered=InternalOnRendered
	Begin Object Class=GUIImage Name=TheImage
		WinWidth=0.600000
		WinHeight=0.976563
		WinLeft=0.088281
		WinTop=0.115365
		RenderWeight=0.4
		ImageStyle=ISTY_Normal
		ImageRenderStyle=MSTY_Normal
		ImageAlign=IMGA_TopLeft
	End Object
	i_Test=TheImage

	Begin Object Class=moComboBox Name=SelectImage
		Caption="Select Image"
		WinWidth=0.538086
		WinHeight=0.040000
		WinLeft=0.000000
		WinTop=0.000000
		OnChange=OnNewImgSelect
		CaptionWidth=0.1
		ComponentWidth=-1
		bAutoSizeCaption=True
		TabOrder=0
	End Object
	co_Select=SelectImage

	Begin Object Class=GUIbutton Name=AddImage
		OnClick=InternalOnClick
		Caption="Add"
		WinWidth=0.050273
		WinHeight=0.040000
		WinLeft=0.539258
		WinTop=0.000000
		TabOrder=1
	End Object
	b_Add=AddImage

	Begin Object Class=moComboBox Name=ImageStyle
		WinWidth=0.250000
		WinHeight=0.040000
		WinLeft=0.000
		WinTop=0.045
		OnChange=OnNewImgStyle
		Caption="Image Style"
		CaptionWidth=0.1
		ComponentWidth=-1
		bAutoSizeCaption=True
		bReadOnly=True
		TabOrder=4
	End Object
	co_Style=ImageStyle

	Begin Object Class=moComboBox Name=ImageAlign
		WinWidth=0.208984
		WinHeight=0.040000
		WinLeft=0.265625
		WinTop=0.045
		OnChange=OnNewImgAlign
		Caption="Align"
		CaptionWidth=0.1
		ComponentWidth=-1
		bAutoSizeCaption=True
		bReadOnly=True
		TabOrder=5
	End Object
	co_Align=ImageAlign

	Begin Object Class=moComboBox Name=ImageRenderStyle
		WinWidth=0.326172
		WinHeight=0.040000
		WinLeft=0.480469
		WinTop=0.0450
		Caption="Render Style"
		OnChange=InternalOnChange
		CaptionWidth=0.1
		ComponentWidth=-1
		bAutoSizeCaption=True
		bReadOnly=True
		TabOrder=6
	End Object
	co_Render=ImageRenderStyle

	Begin Object Class=GUINumericEdit Name=ImageWidth
		WinWidth=0.107617
		WinHeight=0.040000
		WinLeft=0.731055
		WinTop=0.000000
		OnChange=ResizeImage
		MinValue=10
		MaxValue=1014
		Step=10
		TabOrder=2
	End Object
	nu_Width=ImageWidth

	Begin Object Class=GUINumericEdit Name=ImageHeight
		WinWidth=0.069531
		WinHeight=0.040000
		WinLeft=0.838672
		WinTop=0.000000
		OnChange=ResizeImage
		MinValue=10
		MaxValue=758
		Step=10
		TabOrder=3
	End Object
	nu_Height=ImageHeight

	Begin Object Class=GUILabel Name=ImageDims
		WinWidth=0.121289
		WinHeight=0.040000
		WinLeft=0.594336
		WinTop=0.000000
		StyleName="TextLabel"
		FontScale=FNS_Small
	End Object
	l_ImageSize=ImageDims

	Begin Object Class=GUINumericEdit Name=ImagePortionX1
		OnChange=ChangePortion
		WinWidth=0.083203
		WinHeight=0.040000
		WinLeft=0.003516
		WinTop=0.221354
		MinValue=-1
		MaxValue=1024
		TabOrder=7
		Step=10
	End Object
	nu_PortionX1=ImagePortionX1

	Begin Object Class=GUINumericEdit Name=ImagePortionY1
		OnChange=ChangePortion
		WinWidth=0.083203
		WinHeight=0.040000
		WinLeft=0.003516
		WinTop=0.261354
		MinValue=-1
		MaxValue=1024
		Step=10
		TabOrder=8
	End Object
	nu_PortionY1=ImagePortionY1

	Begin Object Class=GUINumericEdit Name=ImagePortionX2
		OnChange=ChangePortion
		WinWidth=0.083203
		WinHeight=0.040000
		WinLeft=0.003516
		WinTop=0.301354
		MinValue=-1
		MaxValue=1024
		Step=10
		TabOrder=9
	End Object
	nu_PortionX2=ImagePortionX2

	Begin Object Class=GUINumericEdit Name=ImagePortionY2
		OnChange=ChangePortion
		WinWidth=0.083203
		WinHeight=0.040000
		WinLeft=0.003516
		WinTop=0.341354
		MinValue=-1
		MaxValue=1024
		Step=10
		TabOrder=10
	End Object
	nu_PortionY2=ImagePortionY2

	OnOpen=InternalOnOpen
	bRenderWorld=False
	bRequire640x480=True
	bCaptureInput=True

// if _RO_
/*
// end if _RO_
	Images(0)="PlayerPictures.cEgyptFemaleBA"
	Images(1)="InterfaceContent.Menu.bg07"
	Images(2)="2K4Menus.Controls.menuBackground2"
	Images(3)="2K4Menus.Controls.popupBorder_b"
	Images(4)="2K4Menus.Controls.editbox2_b"
// if _RO_
*/
// end if _RO_
}
