Exemple #1
0
Bool ZFrame::MouseButtonRelease(UShort nButton, float Absolute_x, float Absolute_y)
{
  ZListItem * Item;
  ZFrame * Frame;

  // Drag and drop

  if (GuiManager->DragingFrame)
  {
    if (GuiManager->DragingFrame == this) {return(true);}
    DropItem(GuiManager->DragingFrame, nButton);
  }

  //

  if ((Item = SubFrameList.GetFirst()))
  do
  {
    Frame = (ZFrame *)Item->GetObject();
    if (Absolute_x >= Frame->EffectivePosition.Position_x)
     if (Absolute_y >= Frame->EffectivePosition.Position_y)
       if (Absolute_x <= (Frame->EffectivePosition.Position_x + Frame->EffectivePosition.Width))
         if (Absolute_y <= (Frame->EffectivePosition.Position_y + Frame->EffectivePosition.Height))
         {
           Frame->Event_MouseRelease = true;
           Frame->MouseButtonRelease( nButton, Absolute_x, Absolute_y);
         }

  } while ((Item = SubFrameList.GetNext(Item)));
  return true;
}
Exemple #2
0
Bool ZFrame::MouseMove ( float Relative_x, float Relative_y, float Absolute_x, float Absolute_y)
{
  ZListItem * Item;
  ZFrame * Frame;

  GuiManager->MouseOverStack_AddToStack(this);
  if ((Item = SubFrameList.GetFirst()))
  do
  {
    Frame = (ZFrame *)Item->GetObject();
    if (Absolute_x >= Frame->EffectivePosition.Position_x)
      if (Absolute_y >= Frame->EffectivePosition.Position_y)
        if (Absolute_x <= (Frame->EffectivePosition.Position_x + Frame->EffectivePosition.Width))
          if (Absolute_y <= (Frame->EffectivePosition.Position_y + Frame->EffectivePosition.Height))
          {
            if (!Frame->Event_MouseIsActualyOver)
            {
              if (Frame->Flag_Enable_Proc_MouseIn) Frame->MouseIn();
              Frame->Event_MouseWentIn = true;
            }
            Frame->Event_MouseIsActualyOver = true;
            if (Frame->Flag_Enable_Proc_MouseOver) Frame->MouseOver( ((UShort)Frame->EffectivePosition.Position_x) - Absolute_x, ((UShort)Frame->EffectivePosition.Position_y) - Absolute_y );

            Frame->MouseMove( Relative_x, Relative_y , Absolute_x, Absolute_y);
          }
  } while ((Item = SubFrameList.GetNext(Item)));
  return true;
}
Exemple #3
0
Bool ZFrame::MouseButtonClick  (UShort nButton, float Absolute_x, float Absolute_y)
{
  ZListItem * Item;
  ZFrame * Frame;


  GuiManager->FocusStack_AddToStack(this);

  // Drag and drop

  if (Flag_Cap_Dragable && nButton == 1 )
  {
    //ZVector2f Dim;
    //GetSize(Dim.x,Dim.y);
    Flag_Draging = true;
    GuiManager->DragingFrame = this;
    DragAbsolutePosition.x = EffectivePosition.Position_x;
    DragAbsolutePosition.y = EffectivePosition.Position_y;
  }

  // Focus

  if (this->Flag_Enable_Proc_GetFocus) GetFocus();

  // Subframe events propagation

  if ((Item = SubFrameList.GetFirst()))
  do
  {
    Frame = (ZFrame *)Item->GetObject();
    if (Absolute_x >= Frame->EffectivePosition.Position_x)
     if (Absolute_y >= Frame->EffectivePosition.Position_y)
       if (Absolute_x <= (Frame->EffectivePosition.Position_x + Frame->EffectivePosition.Width))
         if (Absolute_y <= (Frame->EffectivePosition.Position_y + Frame->EffectivePosition.Height))
         {
           Frame->Event_MouseClick = true;
           Frame->MouseButtonClick( nButton, Absolute_x, Absolute_y);
         }

  } while ((Item = SubFrameList.GetNext(Item)));
  return true;
}
Exemple #4
0
void ZPanelTextButton::Render(ZRender_Interface *render, Frame_Dimensions * ParentPosition, uintptr_t psvInit )
{

  ZVector3f P1,P2,P3,P4;
  ZVector3f P1m,P2m,P3m,P4m;
  float SliceWidth;

  ZListItem * Item;
  ZFrame * Frame;

  // Frame Position Computing
  if (Flag_Show_Master)
  {
    EffectivePosition.Position_x = ParentPosition->Position_x + Dimensions.Position_x;
    EffectivePosition.Position_y = ParentPosition->Position_y + Dimensions.Position_y;
    EffectivePosition.Position_z = ParentPosition->Position_z + Dimensions.Position_z;
    EffectivePosition.Width = Dimensions.Width;
    EffectivePosition.Height= Dimensions.Height;
    EffectivePosition.Depth = Dimensions.Depth;

    if (this->Flag_Draging) { EffectivePosition.Position_x = DragAbsolutePosition.x; EffectivePosition.Position_y = DragAbsolutePosition.y; }

    // Render this frame

    if (Flag_Show_Frame)
    {
/*
      P1.x = EffectivePosition.Position_x; P1.y = EffectivePosition.Position_y; P1.z = EffectivePosition.Position_z;
      P2.x = EffectivePosition.Position_x + EffectivePosition.Width ; P2.y = EffectivePosition.Position_y ; P2.z = EffectivePosition.Position_z + EffectivePosition.Depth;
      P3.x = EffectivePosition.Position_x + EffectivePosition.Width ; P3.y = EffectivePosition.Position_y + EffectivePosition.Height; P3.z = EffectivePosition.Position_z + EffectivePosition.Depth;
      P4.x = EffectivePosition.Position_x; P4.y = EffectivePosition.Position_y + EffectivePosition.Height; P4.z = EffectivePosition.Position_z + EffectivePosition.Depth;
*/

      P1.x = EffectivePosition.Position_x; P1.y = EffectivePosition.Position_y; P1.z = EffectivePosition.Position_z;
      P2.x = EffectivePosition.Position_x + EffectivePosition.Width ; P2.y = EffectivePosition.Position_y ; P2.z = EffectivePosition.Position_z + EffectivePosition.Depth;
      P3.x = EffectivePosition.Position_x + EffectivePosition.Width ; P3.y = EffectivePosition.Position_y + EffectivePosition.Height; P3.z = EffectivePosition.Position_z + EffectivePosition.Depth;
      P4.x = EffectivePosition.Position_x; P4.y = EffectivePosition.Position_y + EffectivePosition.Height; P4.z = EffectivePosition.Position_z + EffectivePosition.Depth;

      ULong TextureRef = GuiManager->TextureManager->GetTextureEntry(this->TextureNum)->OpenGl_TextureRef[psvInit];
      glBindTexture(GL_TEXTURE_2D,TextureRef );

      SliceWidth = EffectivePosition.Height * 0.25f;

      // The left slice

      P1m.x = P1.x; P1m.y = P1.y; P1m.z = P1.z;
      P2m.x = P1.x + SliceWidth ; P2m.y = P2.y; P2m.z = P2.z;
      P3m.x = P1.x + SliceWidth ; P3m.y = P3.y; P3m.z = P3.z;
      P4m.x = P4.x; P4m.y = P4.y; P4m.z = P4.z;

      glBegin(GL_TRIANGLES);
        glColor3f(DrawColor.r, DrawColor.v, DrawColor.b);
        glTexCoord2f(0.0,0.0);  glVertex3f(P1m.x, P1m.y , P1m.z);
        glTexCoord2f(0.25,0.0); glVertex3f(P2m.x, P2m.y , P2m.z);
        glTexCoord2f(0.25,1.0); glVertex3f(P3m.x, P3m.y , P3m.z);
        glTexCoord2f(0.25,1.0); glVertex3f(P3m.x, P3m.y , P3m.z);
        glTexCoord2f(0.0,1.0);  glVertex3f(P4m.x, P4m.y , P4m.z);
        glTexCoord2f(0.0,0.0);  glVertex3f(P1m.x, P1m.y , P1m.z);
      glEnd();

      // Right slice

      P1m.x = P2.x-SliceWidth; P1m.y = P1.y; P1m.z = P1.z;
      P2m.x = P2.x; P2m.y = P2.y; P2m.z = P2.z;
      P3m.x = P3.x; P3m.y = P3.y; P3m.z = P3.z;
      P4m.x = P3.x-SliceWidth; P4m.y = P4.y; P4m.z = P4.z;
      glBegin(GL_TRIANGLES);
        //glColor3f(DrawColor.r, DrawColor.v, DrawColor.b);
        glTexCoord2f(0.75,0.0);  glVertex3f(P1m.x, P1m.y , P1m.z);
        glTexCoord2f(1.0,0.0);   glVertex3f(P2m.x, P2m.y , P2m.z);
        glTexCoord2f(1.0,1.0);   glVertex3f(P3m.x, P3m.y , P3m.z);
        glTexCoord2f(1.0,1.0);   glVertex3f(P3m.x, P3m.y , P3m.z);
        glTexCoord2f(0.75,1.0);  glVertex3f(P4m.x, P4m.y , P4m.z);
        glTexCoord2f(0.75,0.0);  glVertex3f(P1m.x, P1m.y , P1m.z);
      glEnd();

      // Middle slice

      P1m.x = P1.x+SliceWidth; P1m.y = P1.y; P1m.z = P1.z;
      P2m.x = P2.x-SliceWidth; P2m.y = P2.y; P2m.z = P2.z;
      P3m.x = P3.x-SliceWidth; P3m.y = P3.y; P3m.z = P3.z;
      P4m.x = P4.x+SliceWidth; P4m.y = P4.y; P4m.z = P4.z;
      glBegin(GL_TRIANGLES);
        //glColor3f(DrawColor.r, DrawColor.v, DrawColor.b);
        glTexCoord2f(0.25,0.0);  glVertex3f(P1m.x, P1m.y , P1m.z);
        glTexCoord2f(0.75,0.0);  glVertex3f(P2m.x, P2m.y , P2m.z);
        glTexCoord2f(0.75,1.0);  glVertex3f(P3m.x, P3m.y , P3m.z);
        glTexCoord2f(0.75,1.0);  glVertex3f(P3m.x, P3m.y , P3m.z);
        glTexCoord2f(0.25,1.0);  glVertex3f(P4m.x, P4m.y , P4m.z);
        glTexCoord2f(0.25,0.0);  glVertex3f(P1m.x, P1m.y , P1m.z);
      glEnd();

    }


    // Render child frames

    if (Flag_Show_Childs)
    {
      //SubFrameList.Dump();
      Item = SubFrameList.GetFirst();
      while (Item)
      {
        Frame = (ZFrame *)Item->GetObject();
        if (Frame) Frame->Render(render, &EffectivePosition, psvInit );

        Item = SubFrameList.GetNext(Item);
      }
    }

  }

}
Exemple #5
0
void ZFrame::Render(ZRender_Interface *render, Frame_Dimensions * ParentPosition, uintptr_t psvInit)
{
	struct {
		ZVector3f P1,P2,P3,P4;
	}P;
  ZListItem * Item;
  ZFrame * Frame;

  // Frame Position Computing
  if (Flag_Show_Master)
  {
    EffectivePosition.Position_x = ParentPosition->Position_x + Dimensions.Position_x;
    EffectivePosition.Position_y = ParentPosition->Position_y + Dimensions.Position_y;
    EffectivePosition.Position_z = ParentPosition->Position_z + Dimensions.Position_z;
    EffectivePosition.Width = Dimensions.Width;
    EffectivePosition.Height= Dimensions.Height;
    EffectivePosition.Depth = Dimensions.Depth;

    if (this->Flag_Draging) { EffectivePosition.Position_x = DragAbsolutePosition.x; EffectivePosition.Position_y = DragAbsolutePosition.y; }

    // Render this frame

    if (Flag_Show_Frame)
    {

      P.P1.x = EffectivePosition.Position_x; P.P1.y = EffectivePosition.Position_y; P.P1.z = EffectivePosition.Position_z + EffectivePosition.Depth;
      P.P2.x = EffectivePosition.Position_x + EffectivePosition.Width ; P.P2.y = EffectivePosition.Position_y ; P.P2.z = EffectivePosition.Position_z + EffectivePosition.Depth;
      P.P3.x = EffectivePosition.Position_x + EffectivePosition.Width ; P.P3.y = EffectivePosition.Position_y + EffectivePosition.Height; P.P3.z = EffectivePosition.Position_z + EffectivePosition.Depth;
      P.P4.x = EffectivePosition.Position_x; P.P4.y = EffectivePosition.Position_y + EffectivePosition.Height; P.P4.z = EffectivePosition.Position_z + EffectivePosition.Depth;

      ULong TextureRef = GuiManager->TextureManager->GetTextureEntry(this->TextureNum)->OpenGl_TextureRef[psvInit];
	  float coords[18];
	  float tex_coords[12];
		tex_coords[0] = 0.0; tex_coords[1] = 0.0;   coords[0] = P.P1.x; coords[1] = P.P1.y; coords[2] = P.P1.z; 
		tex_coords[2] = 1.0f; tex_coords[3] = 0.0;  coords[3] = P.P2.x; coords[4] = P.P2.y; coords[5] = P.P2.z; 
		tex_coords[4] = 1.0f; tex_coords[5] = 1.0f; coords[6] = P.P3.x; coords[7] = P.P3.y; coords[8] = P.P3.z; 
		tex_coords[6] = 1.0f; tex_coords[7] = 1.0f; coords[9] = P.P3.x; coords[10] = P.P3.y; coords[11] = P.P3.z; 
		tex_coords[8] = 0.0; tex_coords[9] = 1.0f;  coords[12] = P.P4.x; coords[13] = P.P4.y; coords[14] = P.P4.z; 
		tex_coords[10] = 0.0; tex_coords[11] = 0.0; coords[15] = P.P1.x; coords[16] = P.P1.y; coords[17] = P.P1.z; 
		//lprintf( "%3d %g,%g,%g %g,%g,%g", TextureRef, P.P1.x, P.P1.y, P.P1.z, P.P3.x, P.P3.y, P.P3.z );
	  render->gui_shader->Draw( TextureRef, &DrawColor.r, coords, tex_coords );
	  /*
      glBindTexture(GL_TEXTURE_2D,TextureRef );
      glBegin(GL_TRIANGLES);
        glColor3f(DrawColor.r, DrawColor.v, DrawColor.b);
        glTexCoord2f(0.0,0.0); glVertex3f(P1.x, P1.y , P1.z);
        glTexCoord2f(1.0,0.0); glVertex3f(P2.x, P2.y , P2.z);
        glTexCoord2f(1.0,1.0); glVertex3f(P3.x, P3.y , P3.z);
        glTexCoord2f(1.0,1.0);glVertex3f(P3.x, P3.y , P3.z);
        glTexCoord2f(0.0,1.0);glVertex3f(P4.x, P4.y , P4.z);
        glTexCoord2f(0.0,0.0);glVertex3f(P1.x, P1.y , P1.z);
      glEnd();
	  */
    }


    // Render child frames

    if (Flag_Show_Childs)
    {
      //SubFrameList.Dump();
      Item = SubFrameList.GetFirst();
      while (Item)
      {
        Frame = (ZFrame *)Item->GetObject();
        if (Frame) Frame->Render(render, &EffectivePosition, psvInit);

        Item = SubFrameList.GetNext(Item);
      }
    }

  }

}