Page 1 of 1

whether "staticimage" can load 2 images and 2 texts or not?

Posted: Wed May 06, 2009 08:03
by haibo19981984
Hello, i have a simple question.
I want "staticimage" to load 2 images and 2 texts:
background // skill image
fontground // effect image
text1 // shortcut key
text2 // level
my .looknfeel:

Code: Select all

 <!--
    ***************************************************
        Test/StaticImage
    ***************************************************
    -->
    <WidgetLook name="Test/StaticImage">
         <PropertyDefinition name="ImageColours" initialValue="tl:FFFFFFFF tr:FFFFFFFF bl:FFFFFFFF br:FFFFFFFF" redrawOnWrite="true" />
         <PropertyDefinition name="FrameColours" initialValue="tl:FFFFFFFF tr:FFFFFFFF bl:FFFFFFFF br:FFFFFFFF" redrawOnWrite="true" />
         <PropertyDefinition name="BackgroundColours" initialValue="tl:FFFFFFFF tr:FFFFFFFF bl:FFFFFFFF br:FFFFFFFF" redrawOnWrite="true" />
        <PropertyDefinition name="VertFormatting" initialValue="Stretched" redrawOnWrite="true" />
        <PropertyDefinition name="HorzFormatting" initialValue="Stretched" redrawOnWrite="true" />
        <Property name="BackgroundEnabled" value="True" />
        <Property name="FrameEnabled" value="True" />
        <PropertyDefinition name="VertLabelFormatting" initialValue="BottomAligned" />
        <PropertyDefinition name="HorzLabelFormatting" initialValue="RightAligned" />
        <PropertyDefinition name="TextColour" initialValue="FFFFFFFF" redrawOnWrite="true" />
        <PropertyDefinition name="image2" initialValue="" redrawOnWrite="true" />
        <ImagerySection name="label">
            <TextComponent>
                <Area>
                    <Dim type="LeftEdge"><AbsoluteDim value="-2" /></Dim>
                    <Dim type="TopEdge"><AbsoluteDim value="-2" /></Dim>
                    <Dim type="Width"><UnifiedDim scale="1" type="Width" /></Dim>
                    <Dim type="Height"><UnifiedDim scale="1" type="Height" /></Dim>
                </Area>
                <ColourProperty name="TextColour" />
                <VertFormatProperty name="VertLabelFormatting" />
                <HorzFormatProperty name="HorzLabelFormatting" />
            </TextComponent>
        </ImagerySection>
        <ImagerySection name="image_noframe2">
            <ImageryComponent>
                <Area>
      <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
      <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
      <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
      <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
   </Area>
                <ImageProperty name="Image2" />
                <ColourRectProperty name="ImageColours" />
                <VertFormatProperty name="VertFormatting" />
                <HorzFormatProperty name="HorzFormatting" />
            </ImageryComponent>
        </ImagerySection>
        <ImagerySection name="image_withframe">
            <ImageryComponent>
                  <Area>
      <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="StaticLeft" dimension="Width" /></Dim>
      <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="StaticTop" dimension="Height" /></Dim>
      <Dim type="RightEdge" >
                     <UnifiedDim scale="1" type="RightEdge">
            <DimOperator op="Subtract">
               <ImageDim imageset="Test" image="StaticRight" dimension="Width" />
            </DimOperator>
         </UnifiedDim>
      </Dim>
      <Dim type="BottomEdge" >
         <UnifiedDim scale="1" type="BottomEdge">
            <DimOperator op="Subtract">
               <ImageDim imageset="Test" image="StaticBottom" dimension="Height" />
            </DimOperator>
         </UnifiedDim>
      </Dim>
   </Area>
                <ImageProperty name="Image" />
                <ColourRectProperty name="ImageColours" />
                <VertFormatProperty name="VertFormatting" />
                <HorzFormatProperty name="HorzFormatting" />
            </ImageryComponent>
        </ImagerySection>
        <ImagerySection name="image_noframe">
            <ImageryComponent>
                <Area>
      <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
      <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
      <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
      <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
   </Area>
                <ImageProperty name="Image" />
                <ColourRectProperty name="ImageColours" />
                <VertFormatProperty name="VertFormatting" />
                <HorzFormatProperty name="HorzFormatting" />
            </ImageryComponent>
        </ImagerySection>
        <StateImagery name="Enabled" />
        <StateImagery name="Disabled" />
        <StateImagery name="EnabledFrame">
            <Layer>
                <Section look="Test/StaticShared" section="frame" />
            </Layer>
        </StateImagery>
        <StateImagery name="DisabledFrame">
            <Layer>
                <Section look="Test/StaticShared" section="frame" />
            </Layer>
        </StateImagery>
        <StateImagery name="WithFrameEnabledBackground">
            <Layer>
                <Section look="Test/StaticShared" section="background" />
            </Layer>
        </StateImagery>
        <StateImagery name="WithFrameDisabledBackground">
            <Layer>
                <Section look="Test/StaticShared" section="background" />
            </Layer>
        </StateImagery>
        <StateImagery name="NoFrameEnabledBackground">
            <Layer>
                <Section look="Test/StaticShared" section="background_noframe" />
            </Layer>
        </StateImagery>
        <StateImagery name="NoFrameDisabledBackground">
            <Layer>
                <Section look="Test/StaticShared" section="background_noframe" />
            </Layer>
        </StateImagery>
        <StateImagery name="WithFrameImage">
            <Layer>
                <Section section="image_withframe" />
                                <Section section="label" />
            </Layer>
        </StateImagery>
        <StateImagery name="NoFrameImage">
            <Layer>
                <Section section="image_noframe" />
                               <Section section="image_noframe2" />
                               <Section section="label" />
            </Layer>
        </StateImagery>
    </WidgetLook>

my imageset:

Code: Select all

<?xml version="1.0" ?>
<Imageset Name="Test" Imagefile="Test.tga" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true">
               .......
   <Image Name="Goods" XPos="61" YPos="192" Width="31" Height="31" />
   <Image Name="Goods2" XPos="100" YPos="192" Width="31" Height="31" />
</Imageset>

my code:

Code: Select all

CEGUI::Window *goods = winMgr.createWindow((CEGUI::utf8*)"Test/StaticImage","goods");
goods->setPosition(CEGUI::UVector2(CEGUI::UDim(0.5f,0), CEGUI::UDim(0.5f,0)));
goods->setSize(CEGUI::UVector2(CEGUI::UDim(0.0f,31), CEGUI::UDim(0.0f,31)));
goods->setProperty("FrameEnabled","false");
goods->setProperty("BackgroundEnabled","false");
CEGUI::Imageset* imgset = CEGUI::ImagesetManager::getSingleton().getImageset((CEGUI::utf8*)"Test");
goods->setProperty("Image", CEGUI::PropertyHelper::imageToString(&imgset->getImage((CEGUI::utf8*)"Goods")));
goods->setProperty("Image2", CEGUI::PropertyHelper::imageToString(&imgset->getImage((CEGUI::utf8*)"Goods2")));
goods->setText("123");

At first,I think it is easy to realize 2 texts.But I fail to do it.
Because I cannot find where to set the text by the name of text.
So I only realize 1 text .
Then, I also want to realize 2 images.The same question appears.
And the error is occur at "Image2".
It seems that "staticimage" accepts only 1 image and 1 text.
At last, I have to appeal the forum.
I want to konw whether "staticimage" can realize what I say or not.
Sorry my English.

Re: whether "staticimage" can load 2 images and 2 texts or not?

Posted: Fri May 15, 2009 19:58
by LennyH
I know for a fact you can load more than one image, since we do so in a project I am working on. However, it has been nearly three years since I have looked at that part of the project. I have not used PropertyHelper before, so I also cannot judge if your usage is correct.

However, you could try:
goods->setProperty("Image", "set:Test image:Goods");
goods->setProperty("Image2", "set:Test image:Goods2");

And do be sure your scheme file actually references your test imageset. I realize you're loading the imageset via code, but, as I said...our code is three years old. But it works, so, hopefully it gives you a starting point.

Re: whether "staticimage" can load 2 images and 2 texts or not?

Posted: Sat May 16, 2009 14:06
by scriptkid
Also, i think that the property names might be case sensitive (you use "Image2" instead of "image2").

And the error is occur at "Image2".


What is the error? Can you post the line of your Cegui.log file?

Thanks,
HTH.

Re: whether "staticimage" can load 2 images and 2 texts or not?

Posted: Tue May 19, 2009 05:55
by haibo19981984
At first,thanks for your replay.
After 2 week of study CEGUI,I had resulted the problem.
The error in my fontal project is "There is no property named 'Image2' ".
The cause is that the property receives only "Image" in the class of "staticimge".
It is clear In sound code of Cegui. So if you want an added property,you must write it youself.
My method is to extend CEGUI.In fact,I create a new widget that looks like "staticimge".
It can load 2 images and 2 texts.
The important part is that how to create the new widget's class.
Luckily, we can find some In sound code of Cegui.
Sorry my English.