예제 #1
0
        protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime time)
        {
            //Create string
            string Txt = "Step " + m_Counter1;
            if (m_ShowNode) Txt += "\r\nVisited nodes " + m_Counter2;
            //	Txt = "raka";

            //Draw string
            renderer.DrawString(m_Font, Txt, rect, Color.White, Alignment.BottomLeft);
        }
예제 #2
0
        protected override void DrawControl(Renderer renderer,
			Rectangle rect, GameTime gameTime)
        {
            this.Left = this.Left - this.Width; // Eeeeeeeeh?
            this.Top = this.Top - this.Height; // Eeeeeeeeh!
            // As with the panning in TilemapBar I have no idea of what happens in Neoforce...
            // ...but hey, at least I made it work!

            base.DrawControl(renderer, rect, gameTime);
        }
예제 #3
0
        protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
        {
            base.DrawControl(renderer, rect, gameTime);

            clipRect.X = rect.X + 1;
            clipRect.Y = rect.Y + 1;
            renderer.Draw(_clipImg, clipRect, Color.White);

            clipRect.Y += 5;
            renderer.DrawString(_policyTitleFont, PolicyType.Title, clipRect, Color.White, Alignment.TopCenter); 
        }
예제 #4
0
    ////////////////////////////////////////////////////////////////////////////

    ////////////////////////////////////////////////////////////////////////////   
    protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
    {                  
      SkinLayer layer = Skin.Layers["Control"];      
      SpriteFont font = (layer.Text != null && layer.Text.Font != null) ? layer.Text.Font.Resource : null;
      Color col = (layer.Text != null) ? layer.Text.Colors.Enabled : Color.White;
      Point offset = new Point(layer.Text.OffsetX, layer.Text.OffsetY);        
               
      renderer.DrawLayer(this, layer, rect);
     
      if (font != null && Text != null && Text != "")
      {                      
        renderer.DrawString(this, layer, Text, new Rectangle(rect.Left, rect.Top + layer.ContentMargins.Top, rect.Width, Skin.ClientMargins.Top - layer.ContentMargins.Horizontal), false, offset.X, offset.Y, false);
      } 
    }
예제 #5
0
        protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
        {
            //Set color based on state
            Color FontColor = Color.White;
            if (ControlState == ControlState.Hovered) FontColor = Color.Gold;
            if (ControlState == ControlState.Pressed) FontColor = Color.Gray;

            //Set offset based on state
            Rectangle Rect = new Rectangle(rect.X, rect.Y, rect.Width, rect.Height);
            if (ControlState == ControlState.Pressed) {
                Rect.X += 4; Rect.Y += 4;
            }

            //Draw text only
            if (m_Font != null) renderer.DrawString(m_Font, Text, Rect, FontColor, Alignment.MiddleLeft );
        }
예제 #6
0
        protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime time)
        {
            //Draw the lifebar
            renderer.Draw(m_BarImage, rect, Color.White);

            //For each life
            for (int i = 0; i < m_Life; i++) {
                //Calculate position
                Rectangle LifeRect	 = new Rectangle(rect.Left, rect.Top, m_LifeImage.Width, m_LifeImage.Height);
                LifeRect.X			+= Global.LIFE_X + (i * (m_LifeImage.Width - 2));
                LifeRect.Y			+= Global.LIFE_Y;

                //Draw it
                renderer.Draw(m_LifeImage, LifeRect, Color.White);
            }
        }
예제 #7
0
        protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
        {
            _policyRect.X = rect.X;
            _policyRect.Y = rect.Y;

            if (Policy != null)
            {
                if (MainWindow.Game.Human.Policies.Contains(Policy))
                    renderer.Draw(_button44gold, _policyRect, Color.White);
                else if (MainWindow.Game.Human.PoliciesInReach.Contains(Policy))
                    renderer.Draw(_button44, _policyRect, Color.Gray);
                else
                    renderer.Draw(_button44, _policyRect, Color.White);

                renderer.Draw(Policy.Image, _policyRect, Color.White);
            }            
        }
예제 #8
0
        public override void Render(Renderer renderer, GameTime gameTime)
        {
            if (_backgroundBuffer == null)
                UpdateBackground(Width, Height);

            // if buffer is still empty, something wrong
            if (_backgroundBuffer == null)
                return;

            base.Render(renderer, gameTime);

            if (Visible)
            {
                renderer.Begin(BlendingMode.Default);
                renderer.Draw(_backgroundBuffer, this.AbsoluteRect, AlphaColor);
                renderer.End();
            }
        }
예제 #9
0
        protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
        {
            if (Player != null)
            {
                _iconRect.X = rect.X;
                _iconRect.Y = rect.Y;

                renderer.Draw(Player.Leader.Image, _iconRect, Color.White);

                renderer.DrawString(_font, Player.Leader.Title, rect.X + 24, rect.Y, Color.White);

                renderer.DrawString(_font, Player.Score.ToString(), rect.X + rect.Width - 20, rect.Y, Color.White);
            }

            _seperatorRect.X = rect.X;
            _seperatorRect.Y = rect.Y + rect.Height - 2;

            renderer.Draw(bar340x2, _seperatorRect, Color.White);
        }
예제 #10
0
        protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
        {
            base.DrawControl(renderer, rect, gameTime);

            SkinLayer layer = Skin.Layers["Control"];

            if(Text != null && Text != "")
            {
            int width = (int)layer.Text.Font.Resource.MeasureString(Text).X;
            int ox = 5;

            if (width < this.Width)
            {
                ox = (this.Width - width) / 2;
            }
                renderer.DrawString(this, layer, Text, rect, true, ox, 0);

            }
        }
예제 #11
0
        ////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////
        protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
        {
            // We draw the control the same way the ancestor does.
              // In this case, ancestor draws all states automatically according to description in the skin file.
              base.DrawControl(renderer, rect, gameTime);

              //SkinLayer layer = Skin.Layers[lrButton];
              //int ox = 0; int oy = 0;

              //// We want to have the text pushed a bit down, when we press the button
              //if (ControlState == ControlState.Pressed)
              //{
              //  ox = 1; oy = 1;
              //}

              //// Now we draw text over our control. This method does it automatically,
              //// based on the description in the skin file.
              //// We use our pressed-state offset for text position.
              //renderer.DrawString(this, layer, Text, rect, true, ox, oy);
        }
예제 #12
0
        protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
        {
            if( MainWindow.Game.Human.Technologies.Contains( Tech ))
                renderer.Draw(_backgroundReached, rect, Color.White);
            else if( MainWindow.Game.Human.CurrentResearch == Tech )
                renderer.Draw(_backgroundActive, rect, Color.White);
            else if( MainWindow.Game.Human.PossibleTechnologies.Contains( Tech ) )
                renderer.Draw(_backgroundPossible, rect, Color.White);
            else
                renderer.Draw(_backgroundNoReach, rect, Color.White);

            if( Tech != null )
            {
                _techIconRect.X = rect.X + 2;
                _techIconRect.Y = rect.Y;
                renderer.Draw(Tech.Image, _techIconRect, Color.White);

                _techTitleRect.X = rect.X + 70;
                _techTitleRect.Y = rect.Y + 5;
                renderer.DrawString(_font, Tech.Title,_techTitleRect, Color.White,Alignment.MiddleLeft );
            }
        }
예제 #13
0
        protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
        {
            if (_buffer == null)
                UpdateBackground(rect.Width, rect.Height);

            // if buffer is still empty, something wrong
            if (_buffer == null)
                return;

            // completely transparent, don't draw anything
            if (Alpha == 0)
                return;

            if (Enabled)
            {
                if (Hovered)
                    renderer.Draw(_bufferGlow, rect, AlphaColor);
                else
                    renderer.Draw(_buffer, rect, AlphaColor);
            }
            else
                renderer.Draw(_bufferDisabled, rect, AlphaColor);
        }
예제 #14
0
        ////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////
        protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
        {
            SkinLayer l1 = Skin.Layers["Control"];
              SkinLayer l2 = Skin.Layers["Selection"];
              rs = new Rectangle[Items.Count];

              renderer.DrawLayer(this, l1, rect, ControlState.Enabled);

              int prev = l1.ContentMargins.Left;
              for (int i = 0; i < Items.Count; i++)
              {
            MenuItem mi = Items[i];

            int tw = (int)l1.Text.Font.Resource.MeasureString(mi.Text).X + l1.ContentMargins.Horizontal;
            rs[i] = new Rectangle(rect.Left + prev, rect.Top + l1.ContentMargins.Top, tw, Height - l1.ContentMargins.Vertical);
            prev += tw;

            if (ItemIndex != i)
            {
              if (mi.Enabled && Enabled)
              {
            renderer.DrawString(this, l1, mi.Text, rs[i], ControlState.Enabled, false);
              }
              else
              {
            renderer.DrawString(this, l1, mi.Text, rs[i], ControlState.Disabled, false);
              }
            }
            else
            {
              if (Items[i].Enabled && Enabled)
              {
            renderer.DrawLayer(this, l2, rs[i], ControlState.Enabled);
            renderer.DrawString(this, l2, mi.Text, rs[i], ControlState.Enabled, false);
              }
              else
              {
            renderer.DrawLayer(this, l2, rs[i], ControlState.Disabled);
            renderer.DrawString(this, l2, mi.Text, rs[i], ControlState.Disabled, false);
              }
            }
              }
        }
예제 #15
0
    ////////////////////////////////////////////////////////////////////////////

    ////////////////////////////////////////////////////////////////////////////   
    protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
    {
      RecalcParams();
      
      SkinLayer p = Skin.Layers["Control"];
      SkinLayer l = Skin.Layers["Scale"];            
      
      float ratio = 0.66f;
      int h = (int)(ratio * rect.Height);
      int t = rect.Top + (Height - h) / 2;      
            
      float px = ((float)value / (float)range);
      int w = (int)Math.Ceiling(px * (rect.Width - p.ContentMargins.Horizontal - btnSlider.Width)) + 2;
            
      if (w < l.SizingMargins.Vertical) w = l.SizingMargins.Vertical;
      if (w > rect.Width - p.ContentMargins.Horizontal) w = rect.Width - p.ContentMargins.Horizontal;
      
      Rectangle r1 = new Rectangle(rect.Left + p.ContentMargins.Left, t + p.ContentMargins.Top, w, h - p.ContentMargins.Vertical);
            
      base.DrawControl(renderer, new Rectangle(rect.Left, t, rect.Width, h), gameTime);      
      if (scale) renderer.DrawLayer(this, l, r1);      
    }
예제 #16
0
		////////////////////////////////////////////////////////////////////////////   

		////////////////////////////////////////////////////////////////////////////
		protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
		{
			SkinLayer l1 = Skin.Layers["Control"];
			SkinLayer l2 = Skin.Layers["Header"];
			Color col = this.Color != UndefinedColor ? this.Color : Color.White;

			Rectangle r1 = new Rectangle(rect.Left, rect.Top + l1.OffsetY, rect.Width, rect.Height - l1.OffsetY);
			if (tabPages.Count <= 0)
			{
				r1 = rect;
			}

			base.DrawControl(renderer, r1, gameTime);

			if (tabPages.Count > 0)
			{

				Rectangle prev = new Rectangle(rect.Left, rect.Top + l2.OffsetY, 0, l2.Height);
				for (int i = 0; i < tabPages.Count; i++)
				{
					SpriteFont font = l2.Text.Font.Resource;
					Margins margins = l2.ContentMargins;
					Point offset = new Point(l2.OffsetX, l2.OffsetY);
					if (i > 0) prev = tabPages[i - 1].HeaderRect;

					tabPages[i].CalcRect(prev, font, margins, offset, i == 0);
				}

				for (int i = tabPages.Count - 1; i >= 0; i--)
				{
					int li = tabPages[i].Enabled ? l2.States.Enabled.Index : l2.States.Disabled.Index;
					Color lc = tabPages[i].Enabled ? l2.Text.Colors.Enabled : l2.Text.Colors.Disabled;
					if (i == hoveredIndex)
					{
						li = l2.States.Hovered.Index;
						lc = l2.Text.Colors.Hovered;
					}


					Margins m = l2.ContentMargins;
					Rectangle rx = tabPages[i].HeaderRect;
					Rectangle sx = new Rectangle(rx.Left + m.Left, rx.Top + m.Top, rx.Width - m.Horizontal, rx.Height - m.Vertical);
					if (i != selectedIndex)
					{
						renderer.DrawLayer(l2, rx, col, li);
						renderer.DrawString(l2.Text.Font.Resource, tabPages[i].Text, sx, lc, l2.Text.Alignment);
					}
				}

				Margins mi = l2.ContentMargins;
				Rectangle ri = tabPages[selectedIndex].HeaderRect;
				Rectangle si = new Rectangle(ri.Left + mi.Left, ri.Top + mi.Top, ri.Width - mi.Horizontal, ri.Height - mi.Vertical);
				renderer.DrawLayer(l2, ri, col, l2.States.Focused.Index);
				renderer.DrawString(l2.Text.Font.Resource, tabPages[selectedIndex].Text, si, l2.Text.Colors.Focused, l2.Text.Alignment, l2.Text.OffsetX, l2.Text.OffsetY, false);
			}
		}
예제 #17
0
        ////////////////////////////////////////////////////////////////////////////      
        ////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Initializes the controls manager.
        /// </summary>    
        ////////////////////////////////////////////////////////////////////////////
        public override void Initialize()
        {
            base.Initialize();

              if (autoCreateRenderTarget)
              {
            if (renderTarget != null)
            {
              renderTarget.Dispose();
            }
            renderTarget = CreateRenderTarget();
              }

              GraphicsDevice.DeviceReset += new System.EventHandler<System.EventArgs>(GraphicsDevice_DeviceReset);

              input.Initialize();
              renderer = new Renderer(this);
              SetSkin(skinName);
        }
예제 #18
0
파일: Button.cs 프로젝트: GodLesZ/svn-dump
    ////////////////////////////////////////////////////////////////////////////
    
    ////////////////////////////////////////////////////////////////////////////
    protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
    {                    

      if (mode == ButtonMode.PushButton && pushed)
      {
        SkinLayer l = Skin.Layers[lrButton];
        renderer.DrawLayer(l, rect, l.States.Pressed.Color, l.States.Pressed.Index);
        if (l.States.Pressed.Overlay)
        {
          renderer.DrawLayer(l, rect, l.Overlays.Pressed.Color, l.Overlays.Pressed.Index);          
        }                
      }
      else
      {
        base.DrawControl(renderer, rect, gameTime);
      }
    
      SkinLayer layer = Skin.Layers[lrButton];                                  
      SpriteFont font = (layer.Text != null && layer.Text.Font != null) ? layer.Text.Font.Resource : null;
      Color col = Color.White;              
      int ox = 0; int oy = 0;
    
      if (ControlState == ControlState.Pressed)
      {       
        if (layer.Text != null) col = layer.Text.Colors.Pressed;
        ox = 1; oy = 1;
      }                               
      if (glyph != null)
      {
        Margins cont = layer.ContentMargins;
        Rectangle r = new Rectangle(rect.Left + cont.Left, 
                                    rect.Top + cont.Top, 
                                    rect.Width - cont.Horizontal, 
                                    rect.Height - cont.Vertical);
        renderer.DrawGlyph(glyph, r);
      }
      else 
      {
        renderer.DrawString(this, layer, Text, rect, true, ox, oy);
      }       
    }
예제 #19
0
    ////////////////////////////////////////////////////////////////////////////
    
    ////////////////////////////////////////////////////////////////////////////
    internal override void Render(Renderer renderer, GameTime gameTime)
    {      
      if (Visible && Shadow)
      {        
        SkinControl c = Manager.Skin.Controls[skShadow];
        SkinLayer l = c.Layers[lrShadow];

        Color cl = Color.FromNonPremultiplied(l.States.Enabled.Color.R, l.States.Enabled.Color.G, l.States.Enabled.Color.B, Alpha);

        renderer.Begin(BlendingMode.Default);
        renderer.DrawLayer(l, new Rectangle(Left - c.OriginMargins.Left, Top - c.OriginMargins.Top, Width + c.OriginMargins.Horizontal, Height + c.OriginMargins.Vertical), cl, 0);
        renderer.End();
      }
      base.Render(renderer, gameTime);
    }
예제 #20
0
        ////////////////////////////////////////////////////////////////////////////      
        ////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Initializes the controls manager.
        /// </summary>    
        ////////////////////////////////////////////////////////////////////////////
        public override void Initialize()
        {
            base.Initialize();

            Game.Window.ClientSizeChanged += (object sender, System.EventArgs e) =>
            {
                InvalidateRenderTarget();
            };

            if (autoCreateRenderTarget)
            {
                if (renderTarget != null)
                {
                    renderTarget.Dispose();
                }
                renderTarget = CreateRenderTarget();
            }

            GraphicsDevice.DeviceReset += new System.EventHandler<System.EventArgs>(GraphicsDevice_DeviceReset);

            input.Initialize();
            renderer = new Renderer(this);
            SetSkin(skinName);
        }
예제 #21
0
        ////////////////////////////////////////////////////////////////////////////
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                this.disposing = true;

                // Recursively disposing all controls added to the manager and its child controls.
                if (controls != null)
                {
                    int c = controls.Count;
                    for (int i = 0; i < c; i++)
                    {
                        if (controls.Count > 0) controls[0].Dispose();
                    }
                }

                // Disposing all components added to manager.
                if (components != null)
                {
                    int c = components.Count;
                    for (int i = 0; i < c; i++)
                    {
                        if (components.Count > 0) components[0].Dispose();
                    }
                }

                if (content != null)
                {
                    content.Unload();
                    content.Dispose();
                    content = null;
                }

                if (renderer != null)
                {
                    renderer.Dispose();
                    renderer = null;
                }
                if (input != null)
                {
                    input.Dispose();
                    input = null;
                }
            }
            if (GraphicsDevice != null)
                GraphicsDevice.DeviceReset -= new System.EventHandler<System.EventArgs>(GraphicsDevice_DeviceReset);
            base.Dispose(disposing);
        }
예제 #22
0
 ////////////////////////////////////////////////////////////////////////////
 
 ////////////////////////////////////////////////////////////////////////////
 public DrawEventArgs(Renderer renderer, Rectangle rectangle, GameTime gameTime)
 {
   Renderer = renderer;
   Rectangle = rectangle;
   GameTime = gameTime;
 } 
예제 #23
0
    ////////////////////////////////////////////////////////////////////////////                          

    ////////////////////////////////////////////////////////////////////////////
    protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
    {
      base.DrawControl(renderer, rect, gameTime);
    }
예제 #24
0
        ////////////////////////////////////////////////////////////////////////////

        #endregion

        #region //// Destructors ///////

        ////////////////////////////////////////////////////////////////////////////
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                this.disposing = true;

                // Recursively disposing all controls added to the manager and its child controls.
                if (controls != null)
                {
                    int c = controls.Count;
                    for (int i = 0; i < c; i++)
                    {
                        if (controls.Count > 0) controls[0].Dispose();
                    }
                }

                // Disposing all components added to manager.
                if (components != null)
                {
                    int c = components.Count;
                    for (int i = 0; i < c; i++)
                    {
                        if (components.Count > 0) components[0].Dispose();
                    }
                }

                if (content != null)
                {
                    content.Unload();
                    content.Dispose();
                    content = null;
                }

                if (renderer != null)
                {
                    renderer.Dispose();
                    renderer = null;
                }
                if (input != null)
                {
                    input.Dispose();
                    input = null;
                }
            }
            base.Dispose(disposing);
        }
예제 #25
0
 ////////////////////////////////////////////////////////////////////////////   
 ////////////////////////////////////////////////////////////////////////////
 /// <summary>
 /// Renders all controls added to the manager.
 /// </summary>
 /// <param name="gameTime">
 /// Time passed since the last call to Draw.
 /// </param>
 public virtual void BeginDraw(GameTime gameTime)
 {
     if (!renderTargetValid && AutoCreateRenderTarget)
     {
         if (renderTarget != null) RenderTarget.Dispose();
         RenderTarget = CreateRenderTarget();
         renderer = new Renderer(this);
         renderTargetValid = true;
     }
     this.Draw(gameTime);
 }
예제 #26
0
 ////////////////////////////////////////////////////////////////////////////                                                        
 ////////////////////////////////////////////////////////////////////////////
 protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
 {
     if (Border != BevelBorder.None && Style != BevelStyle.None)
       {
     if (Border != BevelBorder.All)
     {
       DrawPart(renderer, rect, Border, Style, false);
     }
     else
     {
       DrawPart(renderer, rect, BevelBorder.Left, Style, true);
       DrawPart(renderer, rect, BevelBorder.Top, Style, true);
       DrawPart(renderer, rect, BevelBorder.Right, Style, true);
       DrawPart(renderer, rect, BevelBorder.Bottom, Style, true);
     }
       }
 }
예제 #27
0
        ////////////////////////////////////////////////////////////////////////////

        ////////////////////////////////////////////////////////////////////////////
        protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
        {
            sbVert.Invalidate();
            pane.Invalidate();
            //DrawPane(this, new DrawEventArgs(renderer, rect, gameTime));

            base.DrawControl(renderer, rect, gameTime);
        }
예제 #28
0
        ////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////     
        private void DrawPart(Renderer renderer, Rectangle rect, BevelBorder pos, BevelStyle style, bool all)
        {
            SkinLayer layer = Skin.Layers["Control"];
              Color c1 = Utilities.ParseColor(layer.Attributes["LightColor"].Value);
              Color c2 = Utilities.ParseColor(layer.Attributes["DarkColor"].Value);
              Color c3 = Utilities.ParseColor(layer.Attributes["FlatColor"].Value);

              if (Color != UndefinedColor) c3 = Color;

              Texture2D img = Skin.Layers["Control"].Image.Resource;

              int x1 = 0; int y1 = 0; int w1 = 0; int h1 = 0;
              int x2 = 0; int y2 = 0; int w2 = 0; int h2 = 0;

              if (style == BevelStyle.Bumped || style == BevelStyle.Etched)
              {
            if (all && (pos == BevelBorder.Top || pos == BevelBorder.Bottom))
            {
              rect = new Rectangle(rect.Left + 1, rect.Top, rect.Width - 2, rect.Height);
            }
            else if (all && (pos == BevelBorder.Left))
            {
              rect = new Rectangle(rect.Left, rect.Top, rect.Width, rect.Height - 1);
            }
            switch (pos)
            {
              case BevelBorder.Left:
              {
            x1 = rect.Left; y1 = rect.Top; w1 = 1; h1 = rect.Height;
            x2 = x1 + 1; y2 = y1; w2 = w1; h2 = h1;
            break;
              }
              case BevelBorder.Top:
              {
            x1 = rect.Left; y1 = rect.Top; w1 = rect.Width; h1 = 1;
            x2 = x1; y2 = y1 + 1; w2 = w1; h2 = h1;
            break;
              }
              case BevelBorder.Right:
              {
            x1 = rect.Left + rect.Width - 2; y1 = rect.Top; w1 = 1; h1 = rect.Height;
            x2 = x1 + 1; y2 = y1; w2 = w1; h2 = h1;
            break;
              }
              case BevelBorder.Bottom:
              {
            x1 = rect.Left; y1 = rect.Top + rect.Height - 2; w1 = rect.Width; h1 = 1;
            x2 = x1; y2 = y1 + 1; w2 = w1; h2 = h1;
            break;
              }
            }
              }
              else
              {
            switch (pos)
            {
              case BevelBorder.Left:
              {
            x1 = rect.Left; y1 = rect.Top; w1 = 1; h1 = rect.Height;
            break;
              }
              case BevelBorder.Top:
              {
            x1 = rect.Left; y1 = rect.Top; w1 = rect.Width; h1 = 1;
            break;
              }
              case BevelBorder.Right:
              {
            x1 = rect.Left + rect.Width - 1; y1 = rect.Top; w1 = 1; h1 = rect.Height;
            break;
              }
              case BevelBorder.Bottom:
              {
            x1 = rect.Left; y1 = rect.Top + rect.Height - 1; w1 = rect.Width; h1 = 1;
            break;
              }
            }
              }

              switch (Style)
              {
            case BevelStyle.Bumped:
            {
              renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c1);
              renderer.Draw(img, new Rectangle(x2, y2, w2, h2), c2);
              break;
            }
            case BevelStyle.Etched:
            {
              renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c2);
              renderer.Draw(img, new Rectangle(x2, y2, w2, h2), c1);
              break;
            }
            case BevelStyle.Raised:
            {
              Color c = c1;
              if (pos == BevelBorder.Left || pos == BevelBorder.Top) c = c1;
              else c = c2;

              renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c);
              break;
            }
            case BevelStyle.Lowered:
            {
              Color c = c1;
              if (pos == BevelBorder.Left || pos == BevelBorder.Top) c = c2;
              else c = c1;

              renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c);
              break;
            }
            default:
            {
              renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c3);
              break;
            }
              }
        }
예제 #29
0
    ////////////////////////////////////////////////////////////////////////////    

    ////////////////////////////////////////////////////////////////////////////
    protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
    {
      SkinLayer l1 = captionVisible ? Skin.Layers[lrCaption] : Skin.Layers[lrFrameTop];      
      SkinLayer l2 = Skin.Layers[lrFrameLeft];
      SkinLayer l3 = Skin.Layers[lrFrameRight];
      SkinLayer l4 = Skin.Layers[lrFrameBottom];      
      SkinLayer l5 = Skin.Layers[lrIcon];      
      LayerStates s1, s2, s3, s4;
      SpriteFont f1 = l1.Text.Font.Resource;
      Color c1 = l1.Text.Colors.Enabled;                                                              
                              
      if ((Focused || (Manager.FocusedControl != null && Manager.FocusedControl.Root == this.Root)) && ControlState != ControlState.Disabled)
      {
        s1 = l1.States.Focused;
        s2 = l2.States.Focused;
        s3 = l3.States.Focused;
        s4 = l4.States.Focused;        
        c1 = l1.Text.Colors.Focused;        
      }
      else if (ControlState == ControlState.Disabled)
      {
        s1 = l1.States.Disabled;
        s2 = l2.States.Disabled;
        s3 = l3.States.Disabled;
        s4 = l4.States.Disabled;
        c1 = l1.Text.Colors.Disabled;
      }
      else
      {
        s1 = l1.States.Enabled;
        s2 = l2.States.Enabled;
        s3 = l3.States.Enabled;
        s4 = l4.States.Enabled;
        c1 = l1.Text.Colors.Enabled;
      }

      renderer.DrawLayer(Skin.Layers[lrWindow], rect, Skin.Layers[lrWindow].States.Enabled.Color, Skin.Layers[lrWindow].States.Enabled.Index);
      
      if (borderVisible)
      {
        renderer.DrawLayer(l1, new Rectangle(rect.Left, rect.Top, rect.Width, l1.Height), s1.Color, s1.Index);
        renderer.DrawLayer(l2, new Rectangle(rect.Left, rect.Top + l1.Height, l2.Width, rect.Height - l1.Height - l4.Height), s2.Color, s2.Index);      
        renderer.DrawLayer(l3, new Rectangle(rect.Right - l3.Width, rect.Top + l1.Height, l3.Width, rect.Height - l1.Height - l4.Height), s3.Color, s3.Index);
        renderer.DrawLayer(l4, new Rectangle(rect.Left, rect.Bottom - l4.Height, rect.Width, l4.Height),  s4.Color, s4.Index);
     
        if (iconVisible && (icon != null || l5 != null) && captionVisible)
        {       
          Texture2D i = (icon != null) ? icon : l5.Image.Resource;        
          renderer.Draw(i, GetIconRect(), Color.White);        
        }

        int icosize = 0;
        if (l5 != null && iconVisible && captionVisible)
        {
          icosize = l1.Height - l1.ContentMargins.Vertical + 4 + l5.OffsetX;
        }
        int closesize = 0;
        if (btnClose.Visible)
        {
          closesize = btnClose.Width - (btnClose.Skin.Layers[lrButton].OffsetX);
        }

        Rectangle r = new Rectangle(rect.Left + l1.ContentMargins.Left + icosize,
                                    rect.Top + l1.ContentMargins.Top,
                                    rect.Width - l1.ContentMargins.Horizontal - closesize - icosize,
                                    l1.Height - l1.ContentMargins.Top - l1.ContentMargins.Bottom);
        int ox = l1.Text.OffsetX;
        int oy = l1.Text.OffsetY;
        renderer.DrawString(f1, Text, r, c1, l1.Text.Alignment, ox, oy, true);
      }  
    }
예제 #30
0
		////////////////////////////////////////////////////////////////////////////                          

		////////////////////////////////////////////////////////////////////////////
		protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
		{
			base.DrawControl(renderer, rect, gameTime);

			SkinLayer l1 = Skin.Layers["Control"];
			SkinLayer l2 = Skin.Layers["Selection"];

			int vsize = LineHeight();
			Color col = Color.White;

			for (int i = 0; i < Items.Count; i++)
			{
				int mod = i > 0 ? 2 : 0;
				int left = rect.Left + l1.ContentMargins.Left + vsize;
				int h = vsize - mod - (i < (Items.Count - 1) ? 1 : 0);
				int top = rect.Top + l1.ContentMargins.Top + (i * vsize) + mod;


				if (Items[i].Separated && i > 0)
				{
					Rectangle r = new Rectangle(left, rect.Top + l1.ContentMargins.Top + (i * vsize), LineWidth() - vsize + 4, 1);
					renderer.Draw(Manager.Skin.Controls["Control"].Layers[0].Image.Resource, r, l1.Text.Colors.Enabled);
				}
				if (ItemIndex != i)
				{
					if (Items[i].Enabled)
					{
						Rectangle r = new Rectangle(left, top, LineWidth() - vsize, h);
						renderer.DrawString(this, l1, Items[i].Text, r, false);
						col = l1.Text.Colors.Enabled;
					}
					else
					{
						Rectangle r = new Rectangle(left + l1.Text.OffsetX,
													top + l1.Text.OffsetY,
													LineWidth() - vsize, h);
						renderer.DrawString(l1.Text.Font.Resource, Items[i].Text, r, l1.Text.Colors.Disabled, l1.Text.Alignment);
						col = l1.Text.Colors.Disabled;
					}
				}
				else
				{
					if (Items[i].Enabled)
					{
						Rectangle rs = new Rectangle(rect.Left + l1.ContentMargins.Left,
													 top,
													 Width - (l1.ContentMargins.Horizontal - Skin.OriginMargins.Horizontal),
													 h);
						renderer.DrawLayer(this, l2, rs);

						Rectangle r = new Rectangle(left,
													top, LineWidth() - vsize, h);

						renderer.DrawString(this, l2, Items[i].Text, r, false);
						col = l2.Text.Colors.Enabled;
					}
					else
					{
						Rectangle rs = new Rectangle(rect.Left + l1.ContentMargins.Left,
													 top,
													 Width - (l1.ContentMargins.Horizontal - Skin.OriginMargins.Horizontal),
													 vsize);
						renderer.DrawLayer(l2, rs, l2.States.Disabled.Color, l2.States.Disabled.Index);

						Rectangle r = new Rectangle(left + l1.Text.OffsetX,
													top + l1.Text.OffsetY,
													LineWidth() - vsize, h);
						renderer.DrawString(l2.Text.Font.Resource, Items[i].Text, r, l2.Text.Colors.Disabled, l2.Text.Alignment);
						col = l2.Text.Colors.Disabled;
					}

				}

				if (Items[i].Image != null)
				{
					Rectangle r = new Rectangle(rect.Left + l1.ContentMargins.Left + 3,
												rect.Top + top + 3,
												LineHeight() - 6,
												LineHeight() - 6);
					renderer.Draw(Items[i].Image, r, Color.White);
				}

				if (Items[i].Items != null && Items[i].Items.Count > 0)
				{
					renderer.Draw(Manager.Skin.Images["Shared.ArrowRight"].Resource, rect.Left + LineWidth() - 4, rect.Top + l1.ContentMargins.Top + (i * vsize) + 8, col);
				}
			}
		}