Giter Site home page Giter Site logo

squid's Introduction

Squid UI framework

What is Squid?

SQUID is a framework to create user interfaces for games and other 2D/3D realtime applications, using a Retained Mode system. SQUID does not depend on a certain rendering engine, you can use it with any engine you like, on any platform that supports the .NET 2.0 framework.

  • it's a UI blackbox
  • it's easy to integrate
  • it is engine agnostic
  • it is unaware of texture or font resources, only integers and strings
  • it doesn’t draw anything; you do

All you need to do is to implement a single interface - the ISquidRenderer.

https://github.com/Roderik11/Squid/wiki/Using-Squid

Example Screenshots

Sample Arrangement

image

Custom Game Engine

image image

Features:

  • scale9 texture grid
  • docking, anchoring
  • margin,padding
  • z-order, clipping, scissoring
  • hierarchical opacity
  • input event handlers
  • international keyboard support
  • custom mouse cursors
  • tooltips
  • drag & drop
  • snapping windows
  • modal windows
  • control state fading
  • easy skinning via styles
  • automatic batching
  • easy to extend
  • it’s fast

Standard Controls:

  • Button
  • CheckBox
  • DropDownList
  • Dialog
  • FlowLayoutFrame
  • Frame
  • ImageControl
  • Label
  • ListBox
  • ListView
  • Panel
  • RadioButton
  • Resizer
  • Scrollbar
  • Slider
  • SplitContainer
  • TabControl
  • TextArea
  • TextBox
  • TreeView
  • VirtualList
  • Window

TODOs:

  • merge TextBox (single line) and TextArea (multi line)
  • remove Xml namespace, classes and serializer. should be external (json/yaml/etc)
  • clean up comments and commented code

squid's People

Contributors

roderik11 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

squid's Issues

Thank you!

Just a note of appreciation for open-sourcing this! I e-mailed you some time back about when this was going to happen. I forked your repository and will be pushing things to you as I encounter them.

I have been using a decompiled version so far and made a few adjustments that are already worth-while to push back in the short future, most notable: Rotation with working collision (currently a desktop as a whole, since that's what I needed).

Forum is down...

In the Forum the Squid have a lot of tips which is now unreachable because the forum is down. I tried to visit the webpage with WayBackMachine but it seems it didn't save any of the topics :(.
@Roderik11 Please if you have the local files can you submit it? Thank you in advance.

How does TextWrap works?

Hi!

I have the following code that is used in a message screen:

_msgFrame = new Frame();
            _msgFrame.Dock = DockStyle.Bottom;

            _msgFrame.Size = new Point(240, 280);
            Controls.Add(_msgFrame);

            _lblMsg = new Label();
            _lblMsg.Dock = DockStyle.Fill;
            _lblMsg.TextWrap = true;
            _lblMsg.Style = textStyle;
            _lblMsg.Text = message;
            _lblMsg.Margin = new Margin(10);
            _msgFrame.Controls.Add(_lblMsg);

So, how does the Label.TextWrap works? I would expect that set it to true would make a word which will cross the right border of the control to be wrapped to the next line but that isn't happening...

Am I doing anything wrong?

Thanks again for the great framework! :)

How to properly close Window?

@Roderik11

After we can window.Show(desktop) how can we close a window and stop it to being invoked on the render loop?

We noticed that after we call window.Close() the window still receive calls on DrawBefore() and DrawCustom()

How do make it stop rendering?

Thanks

Basic sample

Hello!

Thanks for OSS it. It looks very promissor!

I was trying to run it on one of our devices here without success... nothing renders...
I've implemented your renderer interface and got this sample:

var width = 320;
            var height = 240;
            var gfx = new FramebufferDeviceDriver("/dev/fb", width, height, (width * height * 16) >> 3, 90);
            Gui.Renderer = new PIRenderer(gfx);            
            var desktop = new Desktop();
            desktop.Size = new Point(240, 320);
            desktop.ModalColor = ColorInt.RGB(0, 0, 200);
            desktop.Visible = true;
            desktop.Skin = Gui.GenerateStandardSkin();
            var window = new Window();
            window.Name = "home";
            window.Size = new Point(240, 320);
            var label = new Label();
            label.Name = "lblText";
            label.Text = "Testing Skia on new GUI!!!";
            label.Position = new Point(0, 20);
            label.Size = new Point(20, 20);
            label.TextColor = ColorInt.RGB(200, 0, 0);
            window.Controls.Add(label);
            window.Show(desktop);
            desktop.Draw();

Basically it draws to the underlying framebuffer on the PIRenderer class... I put a breakpoint for instance on DrawBox at our renderer implementation but it is never called by the window or the desktop...

Am I missing something? Can you provide a barebone sample on how to use it?

Thanks! Keep the good work!

Best regards,
Gutemberg

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.