Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[SALE 50% OFF] AltSDK: AltPaint + AltSketch + AltAssets + AltStudio (Frameworks, Editors..)

Discussion in 'Assets and Asset Store' started by AltSoftLab, Jun 24, 2015.

  1. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79

    SALE 50%OFF - REPRICED before the New Great Release
    (already available on AltSoftLab and in AssetStore)


    >> AltSDK Web Demos on AltSoftLab <<
    Some screenshots are represented below. Look more in AltSoftLab Screenshots Gallery

    AltSDK specialized forums (all these tools are parts of the one AltSDK Asset):
    AltSDK solution is a set of Frameworks, Libraries, UI controls, Tools and Editor Extensions designed for a wide range of applications and tasks. All AltSDK solutions are pure C# (100% managed), without unsafe code and doesn't depends on any external platform native libraries (no any wrappers are used).

    AltSDK consists of 5 major components:
    • AltAssets - a wide range of solutions (adapted popular libraries)
    • AltStudio - an independent Professional IDE and set of Unity Editor Extensions
    • AltSketch - high level graphics library with extended System.Drawing like API (Fonts, Pens, Brushes, Interactive Geometries, etc.) and rendering by using integrated Software or external Hardware Render Backends. READ MORE
    • AltGUI - a Professional GUI Framework highly integrated into new Unity UI, Unity Editors and NGUI
    • AltOS - a universal Virtual Environment for AltGUI applications

    AltAssets

    • [NEW - Coming soon] SQLite (Demo Coming Soon) - a C# implementation of the full SQLite software library. Contains Alt.Data.SQLite API that equals to System/Mono.Data.SQLite
    • HTML / CSS - interactive HTML 4.01 and CSS level 2 Renderer Library is a multipurpose and high performance HTML interactive solution that provides text selection, link clicked events, scrolling, auto layout, PDF export, etc. Useful for creating reports that supports preview. Integrated to the AltGUI, new Unity UI and NGUI as control. READ MORE
    • SVG - a C# Scalable Vector Graphics rendering engine. Allows reading, transform and displaying of SVG files. Integrated to the AltGUI, new Unity UI and NGUI as control. READ MORE
    • GMap - a great and powerful real time GIS solution. Enable use routing, geocoding, directions and maps from Coogle, Yahoo, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac, Yendux, Mapy.cz, Maps.lt, iKarte.lv, NearMap, OviMap, CloudMade, WikiMapia, MapQuest, etc. Integrated to the AltGUI, new Unity UI and NGUI as control. READ MORE
    • PDFsharp - a widely used.NET library for processing PDF files. You create PDF pages using drawing routines known from AltSketch. Almost anything that can be done with AltSketch will also work with PDFsharp. The same drawing routines can be used to create PDF documents or draw on the screen. It includes support for Unicode in PDF files. READ MORE
    • OxyPlot - a professional universal Interactive Plotting Library that contains many different types of axes and series. The plots can be exported to file formats like png, pdf and svg. Includes hundreds of examples. Integrated to the AltGUI, new Unity UI and NGUI as control. READ MORE (READ MORE 2 - GIS related features)
    • NPlot - an elegant Interactive Charting Library with flexible API. Includes a class for creating Bitmaps. Integrated to the AltGUI, new Unity UI and NGUI as control. READ MORE
    • 3D PieChart - a highly customizable Interactive 3D Pie Chart control. Integrated to the AltGUI, new Unity UI and NGUI as control. READ MORE
    • [NEW - Coming soon] ZLIB.NET - a 100% managed version of ZLIB compression library which implements deflate and inflate compression algorithms
    • etc. - many new solutions are on active development and will be appended soon
    AltSDK also contains some integrated solutions available to AltSDK customers:
    • AltNETType - port of full FreeType rendering engine to managed C#. READ MORE
    • DotNetZip - zip file manipulation for .NET, and more (including replacements for the buggy Microsoft GZipStream and DeflateStream classes)
    • Alt.ComponentModel - multiplatform implementation of System.ComponentModel
    • Alt.Data - multiplatform implementation of System.Data
    • Alt.Xml - multiplatform implementation of System.Xml
    AltSDK has a Virtual File System support with Zip containers for resources loading. All AltAssets functionality works via VirtualFS and all resources can be loaded as from real file system, so from Zip containers (from files or memory streams).


    AltStudio

    AltStudio is the first IDE based on absolutely Virtual GUI (AltGUI). It will be integrated into Unity Editor and will have a powerful Designer Tools for AltGUI and many Unity developers useful solutions.
    The parts of AltStudio are several independent Unity Editor extensions that are coming very soon:
    • [NEW - Coming soon] Advanced Script Inspector (Coming Soon) - based on ICSharpCode TextEditor an advanced editor for any Unity scripts and other text files. Includes syntax highliting, intellisense, code completion and embedded inside the Unity Editor
    • [NEW - Coming soon] Font Inspector (Coming Soon) - an advanced font inspector with font previewing
    • [NEW - Coming soon] Alternative Console (Coming Soon) - an advanced console with some useful extensions in conjunction with Script Inspector (opening sripts in AltStudio / AltScriptInspector to locate compile / runtime errors, warnings and log entries, browsing the call stack and navigation to caller script locations
    • etc. - many new extensions are on active development too and will be appended soon as parts of AltStudio inside Unity solution

    AltSketch - Just Draw It!

    AltSketch is a platform independent Vector Graphics Library with extended System.Drawing (GDI+) like API and Software and Hardware Render Backends (solid and texure AA visual data triangulation) for Games, Scientific Applications & other uses of Computer Graphics. It depends only on System assembly and has own Alt.Data & Alt.Xml multiplatform realizations.

    AltSketch main features:
    • Fast realtime Raster and Vector Text Render based on AltNETType (C# port of full FreeType font render engine)
    • Pens with different styles (solid, dotted, etc.) for drawing any geometries
    • Brushes with different styles (solid, gradient, image, hatch, user defined material, etc.) for filling any geometries
    • Boolean operations on geometries
    • Programmable geometries (geometry generation by algorithm)
    • Image IO operations with different formats (PNG, Jpeg, animated GIF, BMP, Tiff, TGA) from files, streams, memory buffers
    • Fast integrated Software Render Backend (independent on any external graphics)
    • Flexible API for Hardware Render Backend (implemented for Unity and many other graphics and game engines)
    • AltSketch Unity Hardware Render Backend uses only very simple Unity API (not requires FSAA for anti-aliasing, no special shaders, etc.)
    Read more...


    AltGUI

    AltGUI is a new Unity UI & NGUI integrated Professional GUI Framework with Windows Forms like API and hundreds of controls (Docking Windows, Menus, Advanced Editors, Lists, Trees, Data & Property Grids, Buttons, Tabs, File/Font/Color/Other Dialogs, etc.), Data Bindings, hundreds of properties, events and funcs. All AltGUI controls can have HTML4 / CSS2 backround. XAML, Animations, View Models, and pther functionality is under develop. Any AltGUI control can be used in Unity UI & NGUI.

    With AltGUI you can develop, use and distribute controls for the new Unity UI and NGUI (and native AltGUI and AltOS) applications without any differences per each GUI (yours receivers just must have AltSDK). With AltGUI you no more need any specific not flexible and hard coded operations with vertex and texture buffers/objects – just draw your controls with pens, brushes, fonts, boolean geometries, etc. with the single API like it processed with System.Drawing (GDI+) in Windows Forms or draw funcs and shapes in WPF. AltGUI can be used directly without any other GUI (useful in developing process). AltGUI controls can be used in Unity UI or NGUI like Windows Forms controls can be used in WPF or WPF controls can be used in Windows Forms.

    Because AltGUI has Windows.Forms like API and functionality (in conjunction with AltSketch that is similar to System.Drawing - GDI+) it's easy to understand it and port to AltGUI a wide variety of useful libraries and solutions.


    AltOS

    AltOS is a like Virtual Environment for AltGUI native applications like SilverOS but more functional and flexible. All AltGUI applications working in AltOS in cooperative multitasking - all AltGUI applications working in one thread. Preemptive multitasking (each app working in its own thread) is in the roadmap. AltOS tool enables AltGUI applications to run in any real OS environment without any differences. This tool is under active development and will be available very soon.


    AltSDK requires Unity 4.6 or higher (of course Unity 5.XX supported)

    AltSDK Demo contains hundreds of examples of AltSDK in different ways of uses. There are several Unity Web Demos on AltSoftLab representing some of AltSDK features:
    • Unity UI Integration Web Demo
    • NGUI Integration Web Demo
    • Native Web Demo

    AltSDK is available in 2 editions:
    • AltSDK Full Edition available on AltSoftLab
    • AltSDK Unity Edition available on AssetStore
    Unity SDK is a subset of Full SDK, but has the same pricing. Full SDK is available on private GitHub and can be upgraded more often and quickly (not requires Unity Asset Review). If you prefer to have not only Unity Integration or you want to use AltSDK directly (not as Unity application) on Silverlight, Mobile platforms, another graphics engines or just in target .NET 4.0, it’s recommended to buy AltSDK Full Edition. Please look more into differences of Unity and Full SDK on AltSoftLab. Developers who alredy have AltSketch SDK can upgrade licenses to AltSDK Full Edition on AltSoftLab.

    Read more about Full SDK & Unity SDK comparision on AltSoftLab. AltSDK Unity Edition is available on Unity Asset Store:

    AltSDK Social Links:

    Some screenshots are represented below. Look more in AltSoftLab Screenshots Gallery

    Unity UI Integration - Vector Text Double Path Transform


    Unity UI Integration - HTML Panel


    Unity UI Integration - GMap


    Unity UI Integration - NPlot


    Unity UI Integration - OxyPlot


    Unity UI Integration - 3D Pie Chart


    Unity UI Integration - SVG


    QuickFont


    Unity UI Integration - Geometry Sin Transform


    Unity UI Integration - Geometry Boolean Operations
     
    Last edited: Apr 18, 2017
    Arisha, imDanOush, SartrH and 3 others like this.
  2. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    AltGUI HOW TO

    Let's talk about how it's possible to create AltGUI controls usable for Unity UI and NGUI and so on.

    Unity UI & NGUI have 2 major UI elements:
    • AltSketch Paint
    • AltGUI Control Host
    AltSketch Paint is the base drawing visual control. It makes all for the drawing process and can be used dirrectly as separated UI Element. There are 2 major parameters for it:
    • Max FPS - defines maximum refresh calls per second. For invalidating AltSketch Paint you must to call its function Invalidate(). Without this call AltSketch Paint will redraw only on start or when it resized. But if you call Invalidate() on every Update, it will redraw self no more then MaxFPS times per second. So you can call Invalidate so often, as you want - it invalidates not often than MaxFPS times per second. It's useful for the most UI controls, because it's state changes not so often, but can contain many drawing operations. By default we set this parapeter to 60 fps (just the middle of 30 and 120). You can change it to any other value per control.


    • Render Type - Software or Hardware. As you could understand we use buffered graphics for controls. You can draw any compound graphics with just 1 draw call per frame. All control render makes to a Texture. In Unity AltSketch can render in 2 ways: Software rendering to Texture2D using AltSketch powerful and fast internal Software render, or Hardware rendering to RenderTexture. Software Render in many cases faster than HW (because it’s no reason of triangulation and other addition procedures). Also no HW Draw Calls used. So SW render used by default for controls. You can change it in the Object Inspector per control. Also you can change it on the fly.
    You can attach script to AltSketch Paint control and connect to onPaint event to process painting process. In Update func of script you can call Invalidate() func of AltPaint when you need to redraw your AltSketch Paint element. In the AltGUI SDK look at AltSketch Paint example - it's very simple.

    The second major element is AltGUI Control Host. It uses AltSketch Paint for render itself and can process the most variety of UI events (keyboard, pointer, etc.). And it serves as host for AltGUI controls. The main property of this control is 'Child'. You can put AltGUI Control Host control to the scene, attach script that creates AltGUI control and set its instance to AltGUI Control Host 'Child' property. AltGUI control don't know anything about AltGUI Control Host, but can live in it usefully receiving all events.

    Code (CSharp):
    1. public class MyScript : MonoBehaviour
    2. {
    3.     void Start ()
    4.     {
    5.         gameObject.GetComponent<AltGUIControlHost>().Child = new MyAltGUIControl();
    6.     }
    7. }
    In the above sample code we we created an instance of custom MyAltGUIControl. Of course you can create an instance of any other AltGUI control (TreeView, ListVew, RichTextBox, etc.).

    Another way is to create Unity UI or NGUI control is to derive it from AltGUI Control Host and initialize 'Child' property in Start() function of it. Also you can add some cross-calls and Unity Editor properties to it to make this UI control more professional and useful. AltGUI SDK contains several such controls ready to use dirrectly in Unity UI & NGUI (menu structure equals for the Unity UI & NGUI):


    So we already know all about host controls for the both UI systems. The last thing we must to do is just to create a new AltGUI control. It's very easy:

    Code (CSharp):
    1.     public class MyAltGUIControl : Alt.GUI.UserControl // or can be derived from Alt.GUI.Control
    2.     {
    3.         public MyControl()
    4.         {
    5.             //  your code
    6.         }
    7.  
    8.         protected override void OnPaint(Alt.GUI.PaintEventArgs e)
    9.         {
    10.             base.OnPaint(e);
    11.  
    12.             //  your code
    13.         }
    14.  
    15.         protected override void OnPaintBackground(Alt.GUI.PaintEventArgs pevent)
    16.         ...
    17.         protected override void OnResize(Alt.GUI.ResizeEventArgs e)
    18.         ...
    19.         protected override void OnKeyDown(Alt.GUI.KeyEventArgs e)
    20.         ...
    21.         protected override void OnKeyUp(Alt.GUI.KeyEventArgs e)
    22.         ...
    23.         protected override void OnKeyPress(Alt.GUI.KeyPressEventArgs e)
    24.         ...
    25.         protected override void OnMouseDown(Alt.GUI.MouseEventArgs e)
    26.         ...
    27.         protected override void OnMouseUp(Alt.GUI.MouseEventArgs e)
    28.         ...
    29.         protected override void OnMouseMove(Alt.GUI.MouseEventArgs e)
    30.         ...
    31.         protected override void OnMouseWheel(Alt.GUI.MouseEventArgs e)
    32.         ...
    33.         protected override void OnMouseClick(Alt.GUI.MouseEventArgs e)
    34.         ...
    35.         protected override void OnMouseDoubleClick(Alt.GUI.MouseEventArgs e)
    36.         ...
    37.         protected override void OnMouseEnter(System.EventArgs e)
    38.         ...
    39.         protected override void OnMouseLeave(System.EventArgs e)
    40.         ...
    41.         protected override void OnMouseHover(System.EventArgs e)
    42.         ...
    43.  
    44.         //  And hundreds additional event overrides...
    45.     }
    In addition to overrides of event hadlers AltGUI cotrols contain events in the same notation:
    Code (CSharp):
    1.  
    2.         Alt.GUI.PaintEventHandler Paint;
    3.         ...
    4.         Alt.GUI.KeyEventHandler KeyDown;
    5.         ...
    6.         Alt.GUI.MouseEventHandler MouseDown;
    7.         ...
    Almost all properties/events/functions of each AltGUI control is <summary> documented and can be viewed by intellisense or Assembly View. All functionality and API is like Windows.Forms controls, so it's easy to understand it's work.

    Let's try AltSDK and enjoy it! ;)
     
    Arisha, imDanOush, SartrH and 3 others like this.
  3. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    HTML/CSS View & MigraDoc – easy to create Professional Look Views/Reports with PDF export

    Already available on AltSoftLab. HTML Renderer & PdfSharp already in Asset Store, other features coming soon.


    Hi developers,

    In this topic we present the 2 features of AltSDK that allows you to easy create professional Views/Reports and export these content to PDF files (to memory streams or dirrectly to file system). Also you can operate with PDF files in different ways: create, modify, concat, divide, etc. All these features available both for new Unity UI (uGUI) and NGUI developers. Just use it as any other visual controls. Also these features can be used without any GUI.

    These features are:
    • HTML Renderer
    • PDFSharp
    Let's view some dipper on these fine tools that was ported and adapted to AltSDK.

    HTML Renderer

    HTML Renderer is a multipurpose and high performance HTML interactive solution that provides text selection, link clicked events, scrolling, auto layout, PDF export, etc.

    Features and Benefits
    • Extensive HTML 4.01 and CSS level 2 specifications support
    • Support separating CSS from HTML by loading stylesheet code separately
    • Support text selection, copy-paste and context menu
    • AltGUI controls: HtmlPanel, HtmlLabel and HtmlToolTip
    • Create images/PDFs from HTML snippets
    • Handles "real world" malformed HTML, it doesn't have to be XHTML
    • 100% managed code and no external dependencies
    • High performance and low memory footprint
    • Extendable and configurable

    UI controls
    • HtmlPanel - The full power of HTML control build to replace WebBrowser control, accepts HTML, text selection, scrollbars, link click intercept, image load intercept and much more
    • HtmlLabel - As AltGUI label but accepts HTML, text selection, auto-size capabilities, transparent background and more
    • HtmlToolTip - As AltGUI ToolTip control but accepts HTML and ability to handle links

    Possible application's
    • Render HTML content generated by rich web editors like forums, blogs, etc.
    • Render Office documents converted to HTML
    • Create UI that requires text selection with clipboard support
    • Create images from HTML code snippets (Image generation)
    • Create PDF document from HTML code snippets
    You can play with HTML Renderer on AltSoftLab with Web Demo
    Also please look at screenshots at the bottom of this topic or on AltSoftLab Screenshots Gallery

    PDFSharp

    PDFsharp is a widely used.NET library for processing PDF file. You create PDF pages using drawing routines known from AltSketch. Almost anything that can be done with AltSketch will also work with PDFsharp. Only basic text layout is supported by PDFsharp, and page breaks are not created automatically. The same drawing routines can be used for screen or PDF.
    The same drawing routines can be used to create PDF documents or draw on the screen. It includes support for Unicode in PDF files.

    Key Features
    • Creates PDF documents on the fly from any .NET language
    • Easy to understand object model to compose documents
    • Modify, merge, and split existing PDF files
    • Images with transparency (color mask, monochrome mask, alpha mask)
    • Newly designed from scratch and written entirely in C#
    • The graphical classes go well with .NET
    See the PDFsharp Features for further information.

    Use PDFsharp if you want to create PDF files only, but be able to control every pixel and every line that is drawn

    This pack already fully available on AltSoftLab. HTML Renderer & PdfSharp already in Asset Store, other features coming soon. Look at AltGUI SDK forum main thread

    Also please look at screenshots below or on AltSoftLab Screenshots Gallery

    Unity UI Integration - HTML Panel


    HTML Renderer - Text


    HTML Renderer - Using the Code


    HTML Renderer - Tables


    HTML Renderer - Non Standart Features
     
    Last edited: Jan 8, 2017
    Arisha, SartrH, mikenison and 2 others like this.
  4. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi,

    AltSDK is just a new and final name of AltSoftLab solutions Asset. AltSDK includes too many not visual libraries/assets and soon will be much more. So AltSDK is a multi purpose solution and it's too much right to name our solutions as SDK than a GUI. On AssetStore asset will be renamed by nearest asset review.
     
  5. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi developers,

    In this topic we present the several sub assets of AltSDK that allows you to easy create professional Charts and Plots. We took some of the very popular, powerful and widely used charting and plotting libraries and made a hard work on it to port it to AltSDK, to oprimize it to in Unity using and made this using more friendly.
    All these features available both for new Unity UI (uGUI) and NGUI developers. Just use it as any other visual controls. Also these features can be used without any GUI.

    These libraries are:
    • OxyPlot
    • NPlot
    • ZedGraph
    • 3D Pie Chart
    Let's view some dipper on these fine tools that was ported and adapted to AltSDK.


    OxyPlot

    OxyPlot is one of the most powerful and widelly used nextgen interactive plotting libraries in the world at this time for the .NET framework. It has friendly API and hundreds of examples. In AltSDK OxyPlot can be rendered in Software and Hardware render mode. A short features overview presented below:

    Plot types
    • XY (horizontal and vertical axes)
    • Cartesian (same scale on X and Y axis)
    • Polar
    • Pie chart
    Axes
    • Multiple axes
    • It is possible to extend with custom axis types
    Series
    • Different types of series can be added to the same plot
    • It is possible to extend with custom series types
    Annotations
    • It is possible to extend with custom annotation types
    Export

    The plots can be exported to the following raster and vector file formats:
    • png
    • svg
    • pdf
    Interaction
    • Pan - Right mouse button
    • Zoom - Mouse wheel
    • Zoom by rectangle - Ctrl+Right mouse button
    • Reset - Right mouse button double-click
    • Show ‘tracker’ - Left mouse button
    • Reset axes
    Some OxyPlot screenshots are represented below. Look more in AltSoftLab Screenshots Gallery

    AltGUI Unity UI Integration - OxyPlot


    AltSketch Unity OxyPlot


    AltSketch OxyPlot - Rectangle Annotations


    AltSketch OxyPlot - Stern Series


    AltSketch OxyPlot Peaks


    AltSketch OxyPlot - Bar Series with Negative Values


    AltSketch Windows Phone OxyPlot OpenStreet Map



    NPlot

    NPlot is a flexible and easy to use interactive charting library for the .NET Framework which has a wide range of applications. It boasts an elegant and flexible API. NPlot provides some very well defined interfaces that promote user extensibility.The ability to quickly create charts makes NPlot an ideal tool for inspecting data in your software for debugging or analysis purposes. The library’s flexibility also makes it a great choice for creating carefully tuned charts for publications or as part of your application’s UI. In AltSDK NPlot can be rendered in Software and Hardware render mode. A short features overview presented below:

    Supported plot types
    • LinePlot - Use a line plot when it makes sense to interpolate between successive data points. For example you may have measurements of the ambient temperature of a room at various times throughout a day. If the reading was taken frequently, a line plot of temperature vs time would make sense. You can create lines of any color, thickness or dash pattern by specifying the Pen used for drawing.
    • PointPlot - Use a point plot (scatter chart) when it does not make sense to interpolate between successive data points. For example you might want to visualize the height and weight of a group of people on a chart. You could plot a point for each person with the x position determined by their weight and y position determined by their height. Around 15 different pre-defined marker styles are available.
    • StepPlot - Step plots are useful for displaying sample based data (such as PCM audio) where each value can be thought of as representing the value of the measured quantity over a specific time period. You can choose whether the horizontal sections of the step plot are centered on the abscissa values or drawn between successive abscissa values.
    • CandlePlot - This type of plot is often used for displaying financial data. Each bar summarizes a price over a particular time period. The lower and upper positions of the thin sticks indicate the highest and lowest values of the price over the time period. If the filled region is red, the top of the filled region represents the price at the beginning of the time period and the bottom of the filled region the price at the end of the time period. If the filled region is green, the bottom of the filled region is the opening price and the top is the closing price. The candle fill colors are configurable. Also, this plot type can generate “stick” plots which are similar to candle plots.
    • BarPlot - A bar plot is usually used to chart the number of data values belonging to one or more categories. The height of the bar represents the number of values in the given category. For example, you might have a collection of dogs and data on the breed of each. You could create a chart of the number of each type of breed. You will often want to make the lower x axis a LabelAxis (in the above example, the names of the dog breeds). Also, Bar plots can be stacked on top of each other.
    • ImagePlot - This type of chart is often used to display the variation of a value over a spatial area. Each value in the region is mapped to a color. You can specify the color to value mapping using an object of any class that implements IGradient. For example LinearGradient.
    Interaction
    • Pan - Left mouse button
    • Zoom - Mouse wheel
    • Zoom by axis - Left mouse button + move on axis
    • Reset - Right mouse button context menu
    Some NPlot screenshots are represented below. Look more in AltSoftLab Screenshots Gallery

    AltGUI Unity UI Integration - NPlot


    AltSketch NPlot Sound Wave


    AltSketch Windows Phone NPlot Tour


    AltSketch NeoAxis NPlot and SVG



    ZedGraph

    ZedGraph is a well known interactive charting library for the .NET Framework for drawing 2D Line, Bar, and Pie Charts. It features full, detailed customization capabilities, but most options have defaults for ease of use. In AltSDK ZedGraph can be rendered in Software and Hardware render mode.

    Interaction
    • Pan - Left mouse button
    • Zoom - Mouse wheel
    • Zoom by rectangle - Left mouse button + move
    • Reset - Right mouse button context menu
    • Show ‘tracker’ - Left mouse button context menu
    Some ZedGraph screenshots are represented below. Look more in AltSoftLab Screenshots Gallery

    AltSketch Unity ZedGraph



    3D Pie Chart

    3D Pie Chart is a very simple, but so pretty 3-D perspective interactive circular chart control for the .NET Framework. In AltSDK 3DPieChart can be rendered in Software and Hardware render mode.

    Interaction
    • Highlight piece - Mouse on piece
    • Info tooltip - Mouse on piece
    Some 3D Pie Chart screenshots are represented below. Look more in AltSoftLab Screenshots Gallery

    AltSketch Unity Pie Chart
     
    Last edited: Apr 4, 2016
    Alexander31 likes this.
  6. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    AltFontInspector announce

    We are in active development on different applications of AltSDK. AltGUI & AltSketch is multi purposed UI Framework. It can be used not only in game GUI, but also in many different areas of development. And one is Unity Editors/Inspectors. We finished AltGUI integration into Unity Editor and the first simple result is AltFontInspector. It demonstrates the simplest features of AltGUI in Editors - AltSketch drawing. As you can see on the screenshot below we extended Font Inspector with custom area demonstrating inspectable font by drawing with it some text with different sizes.


    This example shows how it's easy to create any custom drawed Editors with AltGUI and AltSketch. Source code of this example is represented below. It's very simple. We'll work on it some more. But it's already usable. More new Inspectors coming soon!
    Code (CSharp):
    1. using System;
    2. using System.Collections.Generic;
    3.  
    4. using Alt.GUI;
    5. using Alt.Sketch;
    6.  
    7. namespace UnityEditor
    8. {
    9.     [CustomEditor(typeof(UnityEngine.Font))]
    10.     public class AltFontInspector : AltEditor
    11.     {
    12.         PrivateFontCollection m_PrivateFontCollection;
    13.         List<Font> m_Fonts;
    14.         List<Brush> m_Brushes;
    15.  
    16.         protected override void OnEnable ()
    17.         {
    18.             if (m_PrivateFontCollection == null)
    19.             {
    20.                 m_PrivateFontCollection = new PrivateFontCollection();
    21.  
    22.                 string assetPath = AssetPath;
    23.                 if (!string.IsNullOrEmpty(assetPath))
    24.                 {
    25.                     try
    26.                     {
    27.                         System.IO.Stream stream = Alt.IO.File.OpenRead(assetPath);
    28.                         if (stream != null)
    29.                         {
    30.                             m_PrivateFontCollection.AddFontStream(stream);
    31.  
    32.                             if (m_PrivateFontCollection.Families.Length > 0)
    33.                             {
    34.                                 FontFamily fontFamily = m_PrivateFontCollection.Families[0];
    35.                                 if (fontFamily != null)
    36.                                 {
    37.                                     m_Fonts = new List<Font>();
    38.                                     m_Brushes = new List<Brush>();
    39.  
    40.                                     AddFont(fontFamily, 12, Color.White);
    41.                                     AddFont(fontFamily, 18, Color.Yellow * 0.9);
    42.                                     AddFont(fontFamily, 24, Color.OrangeRed * 0.87);
    43.                                     AddFont(fontFamily, 36, Color.Red * 0.8);
    44.                                     AddFont(fontFamily, 48, Color.Maroon * 1.2);
    45.                                     AddFont(fontFamily, 60, Color.Green * 0.9);
    46.                                     AddFont(fontFamily, 72, Color.DodgerBlue * 0.8);
    47.                                 }
    48.                             }
    49.                         }
    50.                     }
    51.                     catch (Exception error)
    52.                     {
    53.                         UnityEngine.Debug.LogError("Could not read the content of '" + assetPath + "' because of the following error:");
    54.                         UnityEngine.Debug.LogError(error);
    55.                     }
    56.                 }
    57.             }
    58.  
    59.             FillEditorArea = false;
    60.             Padding margin = Margin; margin.Top = 10; Margin = margin;
    61.             UseDefaultInspector = true;
    62.  
    63.             base.OnEnable ();
    64.         }
    65.  
    66.         void AddFont(FontFamily fontFamily, double emSize, Color color)
    67.         {
    68.             m_Fonts.Add(new Font(fontFamily, emSize));
    69.             m_Brushes.Add(new SolidColorBrush(color));
    70.         }
    71.      
    72.         protected override void OnPaintBackground (PaintEventArgs e)
    73.         {
    74.             base.OnPaintBackground (e);
    75.  
    76.             if (m_Fonts == null)
    77.             {
    78.                 return;
    79.             }
    80.  
    81.             int color = 160;
    82.             e.Graphics.Clear(Color.FromArgb(color, color, color));
    83.         }
    84.  
    85.         const string m_ExampleString = "The quick brown fox jumps over the lazy dog. 1234567890";
    86.         protected override void OnPaint (PaintEventArgs e)
    87.         {
    88.             base.OnPaint (e);
    89.      
    90.             if (m_Fonts == null)
    91.             {
    92.                 return;
    93.             }
    94.  
    95.             e.Graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
    96.  
    97.             double x = 10;
    98.             double y = 10;
    99.  
    100.             int n = m_Fonts.Count;
    101.             for(int i = 0; i < n; i++)
    102.             {
    103.                 Font font = m_Fonts[i];
    104.                 e.Graphics.DrawString(m_ExampleString, font, m_Brushes[i], x, y);
    105.                 y += 0.77 * font.Height;
    106.             }
    107.  
    108.             e.Graphics.DrawRectangle(Color.FromArgb(64, Color.Black), e.ClipRectangle - Size.One);
    109.         }
    110.     }
    111. }
     
    Last edited: Jun 27, 2015
    mikenison, JohnBro and Alexander31 like this.
  7. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    AltScriptInspector announce

    As we finished AltGUI integration into Unity Editor it's possible and easy to use any AltGUI power in this field of development activity. And the main editor we are concentrated on is advanced script inspector named AltScriptInspector. We already got first working version. It's based on ported to AltGUI advanced text editor used in SharpDevelop 3 IDE ICSharpCode.TextEditor.TextEditorControl with syntax highlighting determined by the syntax highlighting definition (.xshd file). So it's possible to easy create syntax highlighting for any types of scripts and also integrate many other useful functionality like intellisence, code completion, serching, etc. As you can see on the screenshot below we replaced the default Unity script inspector with AltScriptInspector.


    IICSharpCode.TextEditor is very powerful and fexible text editor. And with a few lines of code we created a nice solution. It's still very simple. Of course we'll work on it much more by integrating new features into it (intellisence, code completion, serching, etc.). But it's already usable in simple mode and this example shows how it's easy to create any custom Editors with AltGUI and AltSketch. Like IICSharpCode.TextEditor in Unity Editor can be used any AltGUI control. Also it's easy possible to port to AltGUI any useful solution used in the Windows Forms world and use it in Unity with minimum efforts. There are too many good and widely employed solutions in the world that can be successfully used in Unity thanks to AltSDK.
    Source code of this example is represented below. New features and more new Inspectors coming soon!
    Code (CSharp):
    1. using System;
    2. using System.Collections.Generic;
    3.  
    4. using Alt.GUI;
    5. using Alt.Sketch;
    6.  
    7. namespace UnityEditor
    8. {
    9.     [CustomEditor(typeof(MonoScript))]
    10.     public class AltScriptInspector : AltEditor
    11.     {
    12.         public Alt.GUI.ICSharpCode.TextEditor.TextEditorControl TextEditorControl
    13.         {
    14.             get
    15.             {
    16.                 return Child as Alt.GUI.ICSharpCode.TextEditor.TextEditorControl;
    17.             }
    18.         }
    19.          
    20.         public Alt.GUI.ICSharpCode.TextEditor.Document.ITextEditorProperties TextEditorProperties
    21.         {
    22.             get
    23.             {
    24.                 Alt.GUI.ICSharpCode.TextEditor.TextEditorControl textEditorControl = TextEditorControl;
    25.                 if (textEditorControl != null)
    26.                 {
    27.                     return textEditorControl.TextEditorProperties;
    28.                 }
    29.          
    30.                 return null;
    31.             }
    32.             set
    33.             {
    34.                 Alt.GUI.ICSharpCode.TextEditor.TextEditorControl textEditorControl = TextEditorControl;
    35.                 if (textEditorControl != null)
    36.                 {
    37.                     textEditorControl.TextEditorProperties = value;
    38.                 }
    39.             }
    40.         }
    41.          
    42.         public Alt.GUI.ICSharpCode.TextEditor.Document.IFoldingStrategy FoldingStrategy
    43.         {
    44.             get
    45.             {
    46.                 Alt.GUI.ICSharpCode.TextEditor.TextEditorControl textEditorControl = TextEditorControl;
    47.                 if (textEditorControl != null)
    48.                 {
    49.                     return textEditorControl.Document.FoldingManager.FoldingStrategy;
    50.                 }
    51.          
    52.                 return null;
    53.             }
    54.             set
    55.             {
    56.                 Alt.GUI.ICSharpCode.TextEditor.TextEditorControl textEditorControl = TextEditorControl;
    57.                 if (textEditorControl != null)
    58.                 {
    59.                     textEditorControl.Document.FoldingManager.FoldingStrategy = value;
    60.              
    61.                     textEditorControl.Document.FoldingManager.UpdateFoldings(null, null);
    62.                 }
    63.             }
    64.         }
    65.  
    66.         protected override void OnEnable ()
    67.         {
    68.             if (TextEditorControl == null)
    69.             {
    70.                 Child = new Alt.GUI.ICSharpCode.TextEditor.TextEditorControl();
    71.          
    72.                 Alt.GUI.ICSharpCode.TextEditor.TextEditorControl textEditorControl = TextEditorControl;
    73.                 if (textEditorControl == null)
    74.                 {
    75.                     return;
    76.                 }
    77.  
    78.                 textEditorControl.TextEditorProperties.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit;
    79.  
    80.                 textEditorControl.BackColor = Color.WhiteSmoke;
    81.                 textEditorControl.BorderStyle = BorderStyle.None;
    82.  
    83.  
    84.                 // Alt.GUI.ICSharpCode.TextEditor doesn't have any built-in code folding
    85.                 // strategies, so I've included a simple one. Apparently, the
    86.                 // foldings are not updated automatically, so in this demo the user
    87.                 // cannot add or remove folding regions after loading the file.
    88.                 textEditorControl.Document.FoldingManager.FoldingStrategy = new RegionFoldingStrategy();
    89.                 textEditorControl.Document.FoldingManager.UpdateFoldings(null, null);
    90.  
    91.  
    92.                 string assetPath = AssetPath;
    93.                 if (!string.IsNullOrEmpty(assetPath))
    94.                 {
    95.                     try
    96.                     {
    97.                         textEditorControl.LoadFile(AssetPath);
    98.                     }
    99.                     catch (Exception error)
    100.                     {
    101.                         UnityEngine.Debug.LogError("Could not read the content of '" + assetPath + "' because of the following error:");
    102.                         UnityEngine.Debug.LogError(error);
    103.                     }
    104.                 }
    105.             }
    106.  
    107.             FillEditorArea = true;
    108.             UseDefaultInspector = false;
    109.  
    110.             base.OnEnable ();
    111.         }
    112.  
    113.         /// <summary>
    114.         /// The class to generate the foldings, it implements Alt.GUI.ICSharpCode.TextEditor.Document.IFoldingStrategy
    115.         /// </summary>
    116.         class RegionFoldingStrategy : Alt.GUI.ICSharpCode.TextEditor.Document.IFoldingStrategy
    117.         {
    118.             /// <summary>
    119.             /// Generates the foldings for our document.
    120.             /// </summary>
    121.             /// <param name="document">The current document.</param>
    122.             /// <param name="fileName">The filename of the document.</param>
    123.             /// <param name="parseInformation">Extra parse information, not used in this sample.</param>
    124.             /// <returns>A list of FoldMarkers.</returns>
    125.             public List<Alt.GUI.ICSharpCode.TextEditor.Document.FoldMarker> GenerateFoldMarkers(Alt.GUI.ICSharpCode.TextEditor.Document.IDocument document, string fileName, object parseInformation)
    126.             {
    127.                 List<Alt.GUI.ICSharpCode.TextEditor.Document.FoldMarker> list = new List<Alt.GUI.ICSharpCode.TextEditor.Document.FoldMarker>();
    128.          
    129.                 Stack<int> startLines = new Stack<int>();
    130.          
    131.                 // Create foldmarkers for the whole document, enumerate through every line.
    132.                 for (int i = 0; i < document.TotalNumberOfLines; i++)
    133.                 {
    134.                     var seg = document.GetLineSegment(i);
    135.                     int offs, end = document.TextLength;
    136.                     char c;
    137.                     for (offs = seg.Offset; offs < end && ((c = document.GetCharAt(offs)) == ' ' || c == '\t'); offs++)
    138.                     {
    139.                     }
    140.                     if (offs == end)
    141.                     {
    142.                         break;
    143.                     }
    144.              
    145.                     int spaceCount = offs - seg.Offset;
    146.              
    147.                     // now offs points to the first non-whitespace char on the line
    148.                     if (document.GetCharAt(offs) == '#')
    149.                     {
    150.                         string text = document.GetText(offs, seg.Length - spaceCount);
    151.                         if (text.StartsWith("#region"))
    152.                         {
    153.                             startLines.Push(i);
    154.                         }
    155.                  
    156.                         if (text.StartsWith("#endregion") && startLines.Count > 0)
    157.                         {
    158.                             // Add a new FoldMarker to the list.
    159.                             int start = startLines.Pop();
    160.                             list.Add(new Alt.GUI.ICSharpCode.TextEditor.Document.FoldMarker(document, start,
    161.                                                                                            document.GetLineSegment(start).Length,
    162.                                                                                            i, spaceCount + "#endregion".Length));
    163.                         }
    164.                     }
    165.                 }
    166.          
    167.                 return list;
    168.             }
    169.         }
    170.     }
    171. }
     
    Last edited: Jun 27, 2015
    mikenison, JohnBro and Alexander31 like this.
  8. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    AltSDK Asset info updated on AssetStore. Please look at it
     
    Last edited: Jan 8, 2017
    mikenison, JohnBro and Alexander31 like this.
  9. bjornrun

    bjornrun

    Joined:
    Oct 29, 2013
    Posts:
    88
    Is there a dashboard with which target each library works on?
    Trello (or similar) roadmap portal? (the roadmap on your site is a bit short on information (like estimated delivery date))
     
  10. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi bjornrun,

    I'll try to explain some things...

    First of all we must to finish the work planned more than 4 years ago. Yes we are already working on this project almost 4 years and a half. There are lesser than a half of our solutions already presented. Yes, on our web site is only very common roadmap presented. It's because each of that tasks is a large and consists of tens of medium tasks each of which consists of hundreds small tasks. And describe each of them is not useful at this time. AltSDK consists of a wide variety of solutions. So if we'll describe each of our step, the customers can scare of amount of text. ;)

    By the side someone can imagine that it's strange that AltSDK contains too much absolutely different solutions: graphics, GUI, XMPP, DB, Editor Extensions, etc. It's because of our 15 years of experience in different areas and wishes to create a widely used Platform (let's name it AltPlatform) with useful solutions. Also Unity is not the one engine/platform we are interesting on. So AltSDK must to be multipurpose and maximum multiplatform. It's because we are have the PCL (Portable Class Library) version of AltSDK that can be used mobile devices in non Unity projects.

    Besides... On AssetStore we see a lot of very simple assets that have a very good price and sells. We can create such products one per week or two. Most of those assets are not a 1% of AltSDK by weight. Or much of their functionality already implemented in AltSDK. But they are very simple in use (no any programming, tons of Inspectors guiding just 2 simple features, etc.). We think it's working like this: Do you want a lot of fresh and first class fruits and vergetables at a distance of three steps? People says - Nooo! Do you want a good salads, meats and other nice food at a distance of arm's length? Most of them say - Nooo! But if you'll say - open your mouth and try a hamburger; They say - Yeees, it's amazing! :)

    So we decided to do such things: if we see a solution we already have experience on and it can be easy and usefuly realized on AltSDK and can become a part of AltSDK - we do it. And also it's a part of AltSDK features demonstration. We still can't demonstrate just a 10% of AltSDK functionality because we are working on it instead of working on presentation...

    Finally what I can say. We do what we want at this time. But we do only things are mostly planned. After we'll finish most of planned things, we'll concentrate more on presentation, documentation, more structured and detailed roadmap. And after that we'll concentrate more on visual editors/inspectors and no code reqired solutions.

    We hope to finish most of the planned work till the end of the summer.

    And the last one:
    Anyone who likes and/or waiting any AltSDK solution (maybe it's under development and not released yet) can put their comments on this forum thread and/or AltSoftLab forum. These features will get the higher priority in our work. So you are welcome to any communication!
     
    Last edited: Jun 28, 2015
    Alexander31 likes this.
  11. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi,
    Thanks a lot! We hope it will be nice.

    AltSQLite announce

    Some words about:
    • Self-contained, serverless, zero-configuration, transactional SQL database engine
    • AltSQLite is NOT a wrapper. It's absolutely fully managed .NET library (port of SQLite)
    • Used the same database format as used by native sqlite
    • AltSQLite database files can be processed by sqlite managers
    • Alt.Data.SQLite data provider like System.Data.SQLite for sqlite
    Below the benchmark of testings AltSQLite vs native sqlite is presented. As you can see in some cases AltSQLite is faster than native sqlite. In some cases - slower.


    AltSQLite vs native sqlite benchmark
    Invasion continues! ;)
     
    mikenison, JohnBro and Alexander31 like this.
  12. Alexander31

    Alexander31

    Joined:
    Jun 28, 2015
    Posts:
    7
    Hi there,

    Are you really ported full FreeType to C#? If yes, because of only this one thing you are amazing guys!!! I'm new in Unity, but wanted to find any C# implementation of FreeType for many years... And other tools looks great! I have some questions:
    1. What is the part of System.Drawing/GDI+ API supported by AltSketch?
    2. Can you show a code example of using your FreeType.NET engine?
    3. I'm more software engineer than designer. So I.m interesting on AltGUI API. You said it's Windows.Forms like. So how much like?

    Thanks
     
    Last edited: Jun 29, 2015
    MrShneebli likes this.
  13. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi Alexander31,

    Thanks a lot! Yes, we did it. FreeType has been fully ported to C# by us, and as we know it's the only one .NET implementation of FreeType in the world. Just some months of hard work of porting process line by line and i's ready to use. No any external dependencies and no any unsafe code. We named it AltNETType. You can no more to care about native FreeType libraries on different platforms and can dirrectly on the fly create all characters of TrueType fonts of any language and any glyph variety.

    Answers:

    1. "What is the part of System.Drawing/GDI+ API supported by AltSketch?"
    We tried to implement most of the GDI+ functionality. And a wide variety of ported/integrated libraries are the examples and test of AltSketch work. So now anyone can forget about font atlases, vertex and texture buffers and too much complicated mathematics. Just Draw draw what are you want with pens & brushes. The main idea - you can put your efforts to draw what are you want and to forget how to implement it. "Just Draw It!" - is the lead slogan of AltSketch! So you are wellcome to draw ;)

    2. "Can you show a code example of using your FreeType.NET engine?"
    Yes, please look below. It's a ported to AltNETType first example of FreeType using. You can look on all 3 examples in work in the Web Demo in Complex Example.
    Code (CSharp):
    1. using System;
    2.  
    3. using Alt.NETType;
    4. using Alt.Sketch;
    5.  
    6. namespace Alt.GUI.Demo
    7. {
    8.     //  FreeType 2 Tutorial
    9.     //  Step 1 — simple glyph loading
    10.     //
    11.     //  example1.c (AltNETType port)
    12.     //
    13.     //  This small program shows how to print a rotated string with the
    14.     //  AltNETType (FreeType.NET) library.
    15.  
    16.     class Example_AltNETType_FreeType2_Step1 : Example__Base
    17.     {
    18.         const int WIDTH = 790;
    19.         const int HEIGHT = 451;
    20.  
    21.         //  origin is the upper left corner
    22.         byte[,] image;
    23.  
    24.         Bitmap m_BackBuffer;
    25.  
    26.         public Example_AltNETType_FreeType2_Step1()
    27.         {
    28.             image = new byte[HEIGHT, WIDTH];
    29.  
    30.             DoWork();
    31.         }
    32.  
    33.         protected override void OnPaint(PaintEventArgs e)
    34.         {
    35.             base.OnPaint(e);
    36.  
    37.             e.Graphics.DrawImage(m_BackBuffer, new Point(5, (Height - m_BackBuffer.PixelHeight) / 2));
    38.         }
    39.  
    40.         void DoWork()
    41.         {
    42.             ANT_Library library;
    43.             ANT_Face face;
    44.  
    45.             ANT_GlyphSlot slot;
    46.             //  transformation matrix
    47.             ANT_Matrix matrix = new ANT_Matrix();
    48.             //  untransformed origin
    49.             ANT_Vector pen = new ANT_Vector();
    50.             ANT_Error error;
    51.  
    52.             string filename;
    53.             string text;
    54.  
    55.             double angle;
    56.             int target_height;
    57.             int n, num_chars;
    58.  
    59.             filename = Common.Example_AltNETType_FontFileName;
    60.             text = "AltNETType = FreeType.NET";
    61.             num_chars = text.Length;
    62.             //  use 25 degrees
    63.             angle = (25.0 / 360) * 3.14159 * 2;
    64.             target_height = HEIGHT;
    65.  
    66.             //  initialize library
    67.             error = ANT.ANT_Init_AltNETType(out library);
    68.             //  error handling omitted
    69.  
    70.             //  create face object
    71.             error = ANT.ANT_New_Face(library, filename, 0, out face);
    72.             //  error handling omitted
    73.             if (error != ANT_Error.ANT_Err_Ok)
    74.             {
    75.                 return;
    76.             }
    77.  
    78.             //  use 50pt at 100dpi
    79.             //  set character size
    80.             error = ANT.ANT_Set_Char_Size(face, 50 * 64, 0, 96, 0);
    81.             //  error handling omitted
    82.  
    83.             slot = face.glyph;
    84.  
    85.             //  set up matrix
    86.             matrix.xx = (int)(Math.Cos(angle) * 0x10000L);
    87.             matrix.xy = (int)(-Math.Sin(angle) * 0x10000L);
    88.             matrix.yx = (int)(Math.Sin(angle) * 0x10000L);
    89.             matrix.yy = (int)(Math.Cos(angle) * 0x10000L);
    90.  
    91.             //  the pen position in 26.6 cartesian space coordinates;
    92.             //  start at (25, 503) relative to the upper left corner
    93.             pen.x = 15 * 64;
    94.             pen.y = (target_height - (HEIGHT - 20)) * 64;
    95.  
    96.             for (n = 0; n < num_chars; n++)
    97.             {
    98.                 //  set transformation
    99.                 ANT.ANT_Set_Transform(face, matrix, pen);
    100.  
    101.                 //  load glyph image into the slot (erase previous one)
    102.                 error = ANT.ANT_Load_Char(face, text[n], ANT_LOAD.ANT_LOAD_RENDER);
    103.                 if (error != ANT_Error.ANT_Err_Ok)
    104.                 {
    105.                     //  ignore errors
    106.                     continue;
    107.                 }
    108.  
    109.                 //  now, draw to our target surface (convert position)
    110.                 draw_bitmap(slot.bitmap, slot.bitmap_left, target_height - slot.bitmap_top);
    111.  
    112.                 //  increment pen position
    113.                 pen.x += slot.advance.x;
    114.                 pen.y += slot.advance.y;
    115.             }
    116.  
    117.             show_image();
    118.  
    119.             ANT.ANT_Done_Face(ref face);
    120.             ANT.ANT_Done_AltNETType(ref library);
    121.         }
    122.  
    123.         //  Replace this function with something useful.
    124.         void draw_bitmap(ANT_Bitmap bitmap, int x, int y)
    125.         {
    126.             int i, j, p, q;
    127.             int x_max = x + bitmap.width;
    128.             int y_max = y + bitmap.rows;
    129.  
    130.             byte[] bitmap_buffer = bitmap.buffer;
    131.             int bitmap_width = bitmap.width;
    132.  
    133.             for (i = x, p = 0; i < x_max; i++, p++)
    134.             {
    135.                 for (j = y, q = 0; j < y_max; j++, q++)
    136.                 {
    137.                     if (i < 0 ||
    138.                         j < 0 ||
    139.                         i >= WIDTH ||
    140.                         j >= HEIGHT)
    141.                     {
    142.                         continue;
    143.                     }
    144.  
    145.                     image[j, i] |= bitmap_buffer[q * bitmap_width + p];
    146.                 }
    147.             }
    148.         }
    149.  
    150.         void show_image()
    151.         {
    152.             Bitmap temp = new Bitmap(WIDTH, HEIGHT, PixelFormat.Format32bppArgb);
    153.             using (Graphics graphics = Graphics.FromImage(temp))
    154.             {
    155.                 Brush brush = new LinearGradientBrush(Point.Zero, new Point(temp.PixelWidth, temp.PixelHeight), Color.Red, Color.GreenYellow);
    156.                 graphics.FillRectangle(brush, temp.PixelRectangle);
    157.             }
    158.  
    159.             BitmapData tempData = temp.LockBits(ImageLockMode.WriteOnly);
    160.             byte[] scan0 = tempData.Scan0;
    161.             int index = -1;
    162.             {
    163.                 for (int i = 0; i < HEIGHT; i++)
    164.                 {
    165.                     for (int j = 0; j < WIDTH; j++)
    166.                     {
    167.                         scan0[index += 4] = image[i, j];
    168.                     }
    169.                 }
    170.             }
    171.             temp.UnlockBits(tempData);
    172.  
    173.             m_BackBuffer = new Bitmap(WIDTH, HEIGHT, PixelFormat.Format24bppRgb);
    174.             using (Graphics graphics = Graphics.FromImage(m_BackBuffer))
    175.             {
    176.                 graphics.Clear(Color.WhiteSmoke);
    177.  
    178.                 graphics.DrawImage(temp, Point.Zero);
    179.             }
    180.         }
    181.     }
    182. }

    3. "I'm more software engineer than designer. So I.m interesting on AltGUI API. You said it's Windows.Forms like. So how much like?"
    AltGUI API is the absolutely Windows Forms like and on 95-97% equals by amount. In some cases differs only parameters types: we use double arithmetics for coordinates and some values (Windows Forms uses int). So if you are familiar in WinForms, you will be nice surprised. The one of the main features of AltGUI is: you can create AltGUI Control once and use it without any modifications and adaptations in new Unity UI & NGUI. AltGUI is not just a GUI for Unity or Games. It's a most common GUI framework. You can create and test AltGUI controls without Unity Editor as separate application (because AltGUI Core is not depends on any integration and backend UI) and then use it in Unity.
    Like WInForms AltGUI has a wide variety native controls (Docking Windows, Menus, Advanced Editors, Lists, Trees, Data & Property Grids, Buttons, Tabs, File/Font/Color/Other Dialogs, etc.), Data bindings, hundreds of properties, events and funcs. All AltGUI controls can have HTML4/CSS2 backround. XAML, Animations, View Models, and pther functionality is under develop. Any AltGUI control can be used in Unity UI & NGUI.
     
    Last edited: Jun 29, 2015
    Alexander31 likes this.
  14. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi Arisha,

    Yes, DataGrid and many other DataSource binding controls. Demo coming as soon as AltSQLite will be released.
     
  15. Alexander31

    Alexander31

    Joined:
    Jun 28, 2015
    Posts:
    7
    Ohhh!.. Johnny, thank you! I'm impressed so much!.. I had experience in many types of GUIs in many engines last 10 years starting from GUIs just for native OpenGL or XNA till OGRE, applications on Qt, GTK and WPF. My working interests lie on the fields of data visualisation, data presentation, input/output forms, reports and so on. I came to Unity world just becouse of portability. Native Unity UI is too primitive for my tasks. Other GUIs I saw is more basic. But yours extensions set is really great for me! Thanks again for description. I need to try AltSDK
     
    AltSoftLab likes this.
  16. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi developers,

    In this topic we present the several sub assets of AltSDK that allows you to easy create professional Charts and Plots. We took some of the very popular, powerful and widely used charting and plotting libraries and made a hard work on it to port it to AltSDK, to oprimize it to in Unity using and made this using more friendly.
    All these features available both for new Unity UI (uGUI) and NGUI developers. Just use it as any other visual controls. Also these features can be used without any GUI.

    These libraries are:
    • OxyPlot
    • NPlot
    • 3D Pie Chart
    Let's view some dipper on these fine tools that was ported and adapted to AltSDK.


    OxyPlot

    OxyPlot is one of the most powerful and widelly used nextgen interactive plotting libraries in the world at this time for the .NET framework. It has friendly API and hundreds of examples. In AltSDK OxyPlot can be rendered in Software and Hardware render mode. A short features overview presented below:

    Plot types
    • XY (horizontal and vertical axes)
    • Cartesian (same scale on X and Y axis)
    • Polar
    • Pie chart
    Axes
    • Multiple axes
    • It is possible to extend with custom axis types
    Series
    • Different types of series can be added to the same plot
    • It is possible to extend with custom series types
    Annotations
    • It is possible to extend with custom annotation types
    Export

    The plots can be exported to the following raster and vector file formats:
    • png
    • svg
    • pdf
    Interaction
    • Pan - Right mouse button
    • Zoom - Mouse wheel
    • Zoom by rectangle - Ctrl+Right mouse button
    • Reset - Right mouse button double-click
    • Show ‘tracker’ - Left mouse button
    • Reset axes
    Some OxyPlot screenshots are represented below. Look more in AltSoftLab Screenshots Gallery

    AltGUI Unity UI Integration - OxyPlot


    AltSketch Unity OxyPlot


    AltSketch OxyPlot - Rectangle Annotations


    AltSketch OxyPlot - Stern Series


    AltSketch OxyPlot Peaks


    AltSketch OxyPlot - Bar Series with Negative Values


    AltSketch Windows Phone OxyPlot OpenStreet Map



    NPlot

    NPlot is a flexible and easy to use interactive charting library for the .NET Framework which has a wide range of applications. It boasts an elegant and flexible API. NPlot provides some very well defined interfaces that promote user extensibility.The ability to quickly create charts makes NPlot an ideal tool for inspecting data in your software for debugging or analysis purposes. The library’s flexibility also makes it a great choice for creating carefully tuned charts for publications or as part of your application’s UI. In AltSDK NPlot can be rendered in Software and Hardware render mode. A short features overview presented below:

    Supported plot types
    • LinePlot - Use a line plot when it makes sense to interpolate between successive data points. For example you may have measurements of the ambient temperature of a room at various times throughout a day. If the reading was taken frequently, a line plot of temperature vs time would make sense. You can create lines of any color, thickness or dash pattern by specifying the Pen used for drawing.
    • PointPlot - Use a point plot (scatter chart) when it does not make sense to interpolate between successive data points. For example you might want to visualize the height and weight of a group of people on a chart. You could plot a point for each person with the x position determined by their weight and y position determined by their height. Around 15 different pre-defined marker styles are available.
    • StepPlot - Step plots are useful for displaying sample based data (such as PCM audio) where each value can be thought of as representing the value of the measured quantity over a specific time period. You can choose whether the horizontal sections of the step plot are centered on the abscissa values or drawn between successive abscissa values.
    • CandlePlot - This type of plot is often used for displaying financial data. Each bar summarizes a price over a particular time period. The lower and upper positions of the thin sticks indicate the highest and lowest values of the price over the time period. If the filled region is red, the top of the filled region represents the price at the beginning of the time period and the bottom of the filled region the price at the end of the time period. If the filled region is green, the bottom of the filled region is the opening price and the top is the closing price. The candle fill colors are configurable. Also, this plot type can generate “stick” plots which are similar to candle plots.
    • BarPlot - A bar plot is usually used to chart the number of data values belonging to one or more categories. The height of the bar represents the number of values in the given category. For example, you might have a collection of dogs and data on the breed of each. You could create a chart of the number of each type of breed. You will often want to make the lower x axis a LabelAxis (in the above example, the names of the dog breeds). Also, Bar plots can be stacked on top of each other.
    • ImagePlot - This type of chart is often used to display the variation of a value over a spatial area. Each value in the region is mapped to a color. You can specify the color to value mapping using an object of any class that implements IGradient. For example LinearGradient.
    Interaction
    • Pan - Left mouse button
    • Zoom - Mouse wheel
    • Zoom by axis - Left mouse button + move on axis
    • Reset - Right mouse button context menu
    Some NPlot screenshots are represented below. Look more in AltSoftLab Screenshots Gallery

    AltGUI Unity UI Integration - NPlot


    AltSketch NPlot Sound Wave


    AltSketch Windows Phone NPlot Tour


    AltSketch NeoAxis NPlot and SVG



    3D Pie Chart

    3D Pie Chart is a very simple, but so pretty 3-D perspective interactive circular chart control for the .NET Framework. In AltSDK 3DPieChart can be rendered in Software and Hardware render mode.

    Interaction
    • Highlight piece - Mouse on piece
    • Info tooltip - Mouse on piece
    Some 3D Pie Chart screenshots are represented below. Look more in AltSoftLab Screenshots Gallery

    AltSketch Unity Pie Chart
     
    Last edited: Jan 8, 2017
  17. Alexander31

    Alexander31

    Joined:
    Jun 28, 2015
    Posts:
    7
    Playing with AltSketch for a some days. Impressing to have such things in a graphics engine. Interesting procedure geometries. Many good libraries have been ported to AltSketch by you. But some API (struct names, fields types) are differs of System.Drawing. Have you any manual or recomendations how to move sorce code from GDI+ to AltSketch?
    And what are the nearest plans of developing?
     
    Last edited: Jul 2, 2015
  18. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi Alexander31,

    I'll shortly describe recommendations of how to port source code from GDI+ to AltSketch some later.

    As answered before now we are concentrating on the next main processes:
    1. AltSDK Demo completely port from Gwen to AltGUI
    2. AltOS base - a minimum functionality to run an AltGUI application
    3. AltStudio base - a minimum functionality to create and build AltGUI applications + integration with Unity Editor, Advanced Script Inspector with Intellisense support
    4. AltGUI Windows Forms backend. As AltGUI in most cases has like WinForms API, and WinForms can run on the most of PC Standalone platforms (MS NET & Mono), so it's good to use WinForms as window container backend. The next step will be GTK#
    5. Porting AltSketch SDK integrations to AltSDK SDK (OpenTK, OGRE, Axiom, Irrlicht, SDL, Mobile platforms native integrations, etc. Google Native Client is in plan also)
    6. Documentation creation (tons of classes, funcs, features and manuals)
    7. ... (maybe some other necessary procedures)
    You can inspect the more complete roadmap on AltSoftLab, but it’s also just the main top level contents.
     
    Last edited: Jul 2, 2015
    Alexander31 likes this.
  19. noania

    noania

    Joined:
    Apr 19, 2014
    Posts:
    33
    This extension looks very promising but won't compiling time become slow with all the features it has?
    (Even if you put them in Standard Assets folder)
     
  20. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi noania,

    No, just 1-2 sec (Intel Core i5) of compilation of 1000 source files of Integration and Demo in Unity Editor or MonoDevelop before the fist frame of working demo has been showed!
     
  21. Alexander31

    Alexander31

    Joined:
    Jun 28, 2015
    Posts:
    7
    Hi,

    Thanx, it will be very useful. Will waiting for it
    Is any news about advanced code inspector? It will be nice to have several tools in one asset
     
    Last edited: Jul 9, 2015
  22. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi Alexander31,

    Thank you for reminding. I'll post recomendations in a day or two.
    We are working not only on inspector, but on full AltStudio infrastructure. Inspector is just a part of AltStudio. It will be interesting! Coming soon
     
    Alexander31 likes this.
  23. Alexander31

    Alexander31

    Joined:
    Jun 28, 2015
    Posts:
    7
    Okay, thanx! Also another question: in above you said about future XAML support. Please tell more about it
     
  24. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi Alexander31,

    We try to create AltGUI in 2 API ways:
    • Windows Forms like API - there are a wide variety useful WinForms applications that can be easy ported to AltGUI and used in Unity
    • Windows Presentation Foundation like API - because it's more structured and task oriented
    So we are working on XAML based UI decorations and behaviour to be more flexible and functional. And also it will be .NET 2.0 Subset!

    Soon you'll know more about features and can try it
     
    Alexander31 likes this.
  25. Alexander31

    Alexander31

    Joined:
    Jun 28, 2015
    Posts:
    7
    Thanx, it's very interesting. Both known API for a one GUI tool is a something amazing. Can't wait to try it
     
  26. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi Alexander31,

    We try to create AltSDK more featurable and flexible, so we try to support the wide variety of useful interfaces. Hope it will be interesting. And comes with the ending of SALES time ;)
     
    Alexander31 likes this.
  27. Alexander31

    Alexander31

    Joined:
    Jun 28, 2015
    Posts:
    7
    Super! And hope you didn't forget about GDI+ to AltSketch porting recomendations
     
  28. cura3D

    cura3D

    Joined:
    Aug 8, 2015
    Posts:
    5
    We've just acquired AltSDK, and differently from AltSketch, it compiles in web player mode, after I'd changed Cursor.visible to Screen.showCursor in AltGUIMonoBehaviour (We're using Unity 4.6.6). The reason why we chose AltSketch was our need for a web player compatible integration of PdfSharp.

    BUT there's a handsome problem: PdfSharp doesn't seem to work in webplayer mode. In the Demo scene it says: "Processing not yet available ...".
    Is this simply due to the file-io-restrictions in web mode or due to some dll incompatibility?
    When I simply copy the DoWork-section from the HelloWorld-example it crashes, both in standalone and in web mode, without any sensible error log.
    So do you have any idea how we might get this running? Maybe I've overlooked something? Or can you give me any hint where to start to integrate it into our code?

    Thanks for your replies in advance!
     
  29. arkon

    arkon

    Joined:
    Jun 27, 2011
    Posts:
    1,122
    I have some questions:

    Is there a demo version so we can try it on a project?
    What are the difference between indie, indie pro and pro versions?
    Does the code work on all platforms, android, iOS, windows and Mac?
     
  30. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi arkon,

    1. You can play with several Web Demos on AltSDK main website - you are wellcome.
    AltSDK Demo contains hundreds of examples of AltSDK in different ways of uses. There are several Unity Web Demos on AltSoftLab representing some of AltSDK features:
    • Unity UI Integration Web Demo
    • NGUI Integration Web Demo
    • Native Web Demo
    2. Read more about Full SDK & Unity SDK comparision on AltSoftLab. AltSDK Unity Edition is available on Unity Asset Store:
    3. AltSDK work on Web, Windows, Linux, Android. We are still in process on iOS. AltSDK hasn't any external dependencies at all. Just only System assembly. All Unity integrations source code is included. But not all platforms .NET implementation is equal. iOS has some limitations that we try to find and solve. But AltSDK core consists of thousands of source codes, so it's not easy. But we hardly working on it. So it coming very soon!
     
    Last edited: Aug 10, 2015
  31. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi nvf33,

    1. Old AltSketch Asset wasn't multiplatform. In AltSDK all platform specifique functionality has been extracted into open source part. So in AltSDK AltSketch (& oll other AltSDK tools) became multiplatform. Thanks for Cursor issue, we'll put it under defines in the next version.

    2. As you can see all PDFSharp demos source code is not defined in WebPlayer mode. It's becouse of "simply due to the file-io-restrictions in web mode".

    3. It's strange error, because we have working PDFSharp already more than 2 years. Though we didn't test it always. We will check this bug error before the next release.

    4. Though we use a lot of demos per each asset, the best way to use and also test some tools it's to have source code of used tool. You have all AltAssets source code in Indie Advanced or Professional licenses. AltSDK is multiplatform and by default not depends on any graphics engine or any external dependencies. So it can be used and testet not only in Unity, but just as independent application. So you can create application for example in VS link to AltSketch, AltGUI, AltAssets (or AltAssets source code if you have) assemplies, include to application Integration code and just play with it and test. For this case it's better to have not AltSDK Unity Edition License, but AltSDK Full Edition License. All about this you can read at our main site on 'Buy' page.
     
  32. cura3D

    cura3D

    Joined:
    Aug 8, 2015
    Posts:
    5
    Hi Johnny,
    thanks for your reply, good to know that the AltSDK (which we have) is supposed to be multiplatform. But could you please be more specific regarding the crash?
    In the example the code looks like:
    Code (csharp):
    1. using System;
    2. using Alt.GUI.PdfSharp.Drawing;
    3. using Alt.GUI.PdfSharp.Pdf;
    4.  public Example_HelloWorld(Alt.GUI.Temporary.Gwen.Control.Base parent) :
    5.   base(parent, "Example_HelloWorld")
    6.   {
    7.   }
    8.  
    9.   protected override void OnLoad(EventArgs ea)
    10.   {
    11.   base.OnLoad(ea);
    12.   }
    13.  
    14.   // This sample is the obligatory Hello World program.
    15.   protected override void DoWork()
    16.   {
    17.  
    18.    // Create a new PDF document
    19.    PdfDocument document = new PdfDocument();
    20.    document.Info.Title = "Created with PDFsharp";
    21.  
    22.   // Create an empty page
    23.    PdfPage page = document.AddPage();
    24.  
    25.    // Get an XGraphics object for drawing
    26.    XGraphics gfx = XGraphics.FromPdfPage(page);
    27.   ...
    28.  
    When I copy the DoWork-Section into a separate function in a separate static function
    like this
    Code (csharp):
    1. using Alt.GUI.PdfSharp.Drawing;
    2. using Alt.GUI.PdfSharp.Pdf;
    3. class PdfExporter
    4.     {
    5.         public static void TestPDF()
    6.         {
    7.             // Create a new PDF document
    8.             PdfDocument document = new PdfDocument();
    9.             document.Info.Title = "Created with PDFsharp";
    10.             //// Create an empty page
    11.             PdfPage page = document.AddPage();
    12.  
    13.             //// Get an XGraphics object for drawing
    14.             XGraphics gfx = XGraphics.FromPdfPage(page);
    15.                         ...
    16.  
    it crashes in line 14. Why is this? What is the specific use of the base class in the demo example? How should I integrate the pdf creation in a (ideally static) function to have it run?
    Please let me know how this is intended to be done.
    Thanks in advance.
     
  33. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi nvf33,

    Thank you for your report. We'll process it an the nearest time.
     
  34. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi developers,

    In this topic we present the several sub assets of AltSDK that allows you to easy work with SVG. We took some of the very popular, powerful and widely used SVG libraries and made a hard work on it to port it to AltSDK, to oprimize it to in Unity using and made this using more friendly.
    All these features available both for new Unity UI (uGUI) and NGUI developers. Just use it as any other visual controls. Also these features can be used without any GUI. For example you can use it to generate textures from SVG data, etc.

    These libraries are:
    • SVG.NET
    • SVG Transformable Geometries
    • More tools coming soon...
    Let's view some dipper on these fine tools that was ported and adapted to AltSDK.


    SVG.NET

    SVG.NET is one of the most powerful and widelly used nextgen SVG libraries in the world at this time for the .NET framework. It has friendly API and examples. In AltSDK SVG can be rendered in Software and Hardware render mode.

    Some SVG.NET screenshots are represented below. Look more in AltSoftLab Screenshots Gallery

    AltGUI Unity UI Integration - SVG


    AltGUI Unity NGUI Integration - SVG



    SVG Transformable Geometries

    SVG Transformable Geometries is a custom processing of SVG data by AltSketch tools. In AltSDK examples you can find SVG parser that reads SVG data from files and converts it to AltSketch vector data Geometries object. AltSketch has a several variety of vector data modifiers and processors. Some of them presented in AltSDK interactive examples.

    Some screenshots are represented below. Look more in AltSoftLab Screenshots Gallery

    AltGUI Unity UI Integration - Lens Effect SVG


    AltSketch Unity Geometry Bilinear and Perspective Transform


    AltSketch Unity SVG Outline



    More tools coming soon...

    At this time we are working on several other SVG tools and more Unity integration functionality. Follow the news.
     
    Last edited: Apr 4, 2016
  35. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi developers,

    In this topic we present the several sub assets of AltSDK that allows you to bring interactive GIS functionality into your application. We took some of the very popular, powerful and widely used libraries and made a hard work on it to port it to AltSDK, to oprimize it to in Unity using and made this using more friendly.
    All these features available both for new Unity UI (uGUI) and NGUI developers. Just use it as any other visual controls. Also these features can be used without any GUI.

    These libraries are:
    • GMap.NET
    • OxyPlot
    Let's view some dipper on these fine tools that was ported and adapted to AltSDK.

    GMap.NET

    GMap.NET is great and Powerful .NET library. Enable use routing, geocoding, directions and maps from
    • Google
    • Yahoo
    • Bing
    • OpenStreetMap
    • ArcGIS
    • Pergo
    • SigPac
    • Yendux
    • Mapy.cz
    • Maps.lt
    • iKarte.lv
    • NearMap
    • OviMap
    • CloudMade
    • WikiMapia
    • MapQuest
    • etc.
    In other words, it is a control for developers who want to bring maps to Unity UI.

    It supports routing and geocoding, allows users to navigate to any coordinates, add markers, and more. You can choose which mode to run the program in, Server, Cache, or Server & Cache. It saves the maps as cache in your local drive so that it can load faster and save bandwidth. GMap.NET lets you explore maps and plan routes, run performance and network connection tests, export cache data, and more.

    At the center of the map there is a cross, you can point it anywhere and then use the slider to zoom inside quickly. It also supports Export, Import, and Prefetch of Cache.

    It also gives the .NET developer unlimited ability to extend it!

    Simple interface with comprehensive options

    The example UI is based on a normal window with a straightforward look that shows all available options. The maps are automatically loaded at startup, and you can easily explore them, zoom in and out, add a marker, as well as jump to a specific location by entering its coordinates.

    Add markers, plan routes, change the map

    It is possible to switch to another maps provider, hide the current marker or add extra ones, disable map dragging, put together a route, as well as to export and import cache files when it comes to routing and geocoding. Moreover, GMap.NET implements tools for viewing a vehicle or flight radar demo, as well as for testing performance and the TCP/IP connections.

    Evaluation and conclusion

    It had minimal impact on system performance, running on low CPU and RAM. All in all, this app features plenty of useful functions for viewing, planning and exporting maps and routes.

    Interaction
    • Pan - Right mouse button
    • Zoom - Mouse wheel
    • Select & zoom to area while holding shift and dragging mouse, switching between maps keeps selected area in the center

    Some GMap.NET screenshots are represented below. Look more in AltSoftLab Screenshots Gallery

    AltGUI Unity UI Integration - GMap with UI


    AltGUI Unity NGUI Integration - GMap


    AltSketch Unity GMap.NET Online Big Map Maker


    AltSketch NeoAxis GMap.NET and CombinedGeometry


    AltSketch XNA MonoGame GMap.NET Interactive


    AltSketch GMap.NET Demo - BingHybridMap


    AltSketch GMap.NET Demo - OpenCycleMap


    AltSketch GMap.NET Demo - GoogleHybridMap


    AltSketch GMap.NET Demo - WikiMapiaMap


    AltSketch GMap.NET Demo - OviTerrainMap


    AltSketch GMap.NET Demo - YahooHybridMap


    AltSketch GMap.NET Demo - ArcGISWorldStreetMap


    AltSketch GMap.NET Demo - OpenCycleTransportMap



    OxyPlot

    OxyPlot is one of the most powerful and widelly used nextgen interactive plotting libraries in the world at this time for the .NET framework. It has friendly API and hundreds of examples. In AltSDK OxyPlot can be rendered in Software and Hardware render mode. A short features overview presented below:

    Interaction
    • Pan - Right mouse button
    • Zoom - Mouse wheel
    • Zoom by rectangle - Ctrl+Right mouse button
    • Reset - Right mouse button double-click
    • Show ‘tracker’ - Left mouse button
    • Reset axes

    Some OxyPlot screenshots are represented below. Look more in AltSoftLab Screenshots Gallery

    AltGUI Unity UI Integration - OxyPlot Map


    AltSketch Windows Phone OxyPlot OpenStreet Map


    AltSketch OxyPlot - Tile Map Annotation (StatKart)
     
    Last edited: Apr 4, 2016
  36. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    AltSketch HowTo

    The base drawing tool of AltSDK is AltSketch Vector Graphics Library. In most cases of API it's like most widely used in the .NET world MS graphics GDI+ (.NET System.Drawing namespace)

    So you can use a lot of web doucumentation tutorials and books related to System.Drawing namespace. Because AltSketch has the same API. For example such info resources are:
    http://msdn.microsoft.com/en-US/en-en/library/system.drawing(v=vs.110).aspx
    http://www.codeproject.com/Articles/1355/Professional-C-Graphics-with-GDI
    http://www.c-sharpcorner.com/UploadFile/mahesh/gdi_plus12092005070041AM/gdi_plus.aspx
    http://www.techotopia.com/index.php/Drawing_Graphics_in_C_Sharp
    http://www.deitel.com/articles/csharp_tutorials/20051025/IntroTo2DGraphics.html
    http://csharpcomputing.com/Tutorials/Lesson13.htm
    http://www.dreamincode.net/forums/topic/67275-the-wonders-of-systemdrawinggraphics/

    Of course AltSDK contains handreds of examples you can deep look and play with.

    Brief info HowTo port System.Drawing code to AltSketch:

    AltSketch uses double arithmetic instead of float, because it has better precision. For example 0.5 in float is not 0.5. It’s 0.499999… And you must use float == 0.5f because float == 0.5 is not working. But maybe some compilers have good results. You can read a lot of web resources related to this task.
    And like in WPF we use double instead of float by default. Point, Size, Rect are double (not int). For 'int' AltSketch uses PointI, SizeI, RectI

    In porting process do by such way:
    • System.Drawing, System.Drawing.Text, System.Drawing.Imaging, System.Drawing.Drawing2D -> Alt.Sketch
    • Use full HorizontalAlignment (VerticalAlignment ) enum with full path Alt.GUI.HorizontalAlignment because HorizontalAlignment property exists (to prevent compiler names conflicts)
    • Point -> PointI
    • Size -> SizeI
    • Rectangle -> RectI
    • PointF -> Point (double)
    • SizeF -> Size (double)
    • RectangleF -> Rect (double)
    • SolidBrush -> SolidColorBrush
    • Image -> ImageSource. Image.Width -> ImageSource.PixelWidth. Image.Height -> ImageSource.PixelHeight. Image.Size -> ImageSource.PixelSize.
    • BitmapData.Scan0 is byte[]
    • Image.FromFile (.FromStream, etc.) -> Bitmap.FromFile (.FromStream, etc.)
    • Icon.FromHandle(bitmap.GetHicon()) -> Icon.FormImage(bitmap)
    • System.Windows.Forms -> Alt.GUI
    • Double arithmetics (all float -> double). Alt.GUI Control Location, Size, Bounds (etc.) – are double (not int)
    • CheckBox.Checked -> CheckBox.IsChecked. CheckButton.Checked -> CheckButton.IsChecked. RadioButton.Checked -> RadioButton.IsChecked
    • Application – object. Make it public to run in AltOS.
     
    Last edited: Apr 4, 2016
  37. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Work on AltStudio and documentation in progress
     
    Last edited: Jan 8, 2017
  38. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi dear community!

    Our website and mail was unavailable for a short time because of technical issues. All is okay now, so you are welcome!
     
    Last edited: Oct 10, 2015
  39. JohnBro

    JohnBro

    Joined:
    Oct 21, 2015
    Posts:
    16
    Hi there,

    I bought AltSDK Pro and played for a some days with it. It's amazing asset that I tried to find many years. I think you have not nice advertising, because I knowed about AltSDK by pure accident on one forum, and then I found it here. I think there are too many people will be happy if they'll know it. So you must try to make more advertising.

    I have some questions:
    1. As I understand you have different triangulation for graphics mode AntiAliasing and Solid mode. It's an internal AltSketch procedure (as I see). What is difference in math and results?
    2. Do you use caches for triangulations and font generation?
    3. How do you find system fonts?
    4. Do you have plans of AltSketch evolution?

    Thanks,
    John
     
  40. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi JohnBro,

    Yes, thank you for advertising suggestions. We'll do it with the next much more powerful release after discounts became off ;)

    You are welcome with questions and discussions:
    1. Yes, we use 2 different and highly optimized universal triangulations: just simple triangulation for solid (not smoothing) mode and AA-textured triangulation to make borders smooth. AA-triangulation uses some more math of course and as result it generates not only triangulated geometry, but also tcoords for a special AA-texture
    2. Yes, we use a lot of smart caches for a wide variety math and graphics operations to decrease equal reps in each frame
    3. It's very easy - just look at Assets\AltSDK\_Integration\PCLTools\PCLTools.cs LoadSystemFonts() procedure
    4. Yes of course. AltSketch is the most base layer for a whole AltSDK platform independent graphics. We'll make optimizations in math, caches, font operations, extend API, batching, path filling and too many more different approaches.
     
    JohnBro likes this.
  41. JohnBro

    JohnBro

    Joined:
    Oct 21, 2015
    Posts:
    16
    Thanks for answers. Path filling is good option. It doesn't present in GDI+ at all. Think it wiil be good to fill paths by images. Do you have plans to use custom shaders for brushes and pens?
     
  42. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi JohnBro,
    You are welcome! Yes, we also think that filling paths will be a good thing. Some interesting effects can be achieved with it.
    There are ExtBrush and Unity_ExtBrushMaterial already presented in AltSketch. You can use custom shaders with it and put special parameters to Unity_ExtBrushMaterial throw the ExtBrush methods. We'll make a deep manual with the next release, but you can look into backend realisation of AltSDK asset and play with it.
     
    JohnBro likes this.
  43. JohnBro

    JohnBro

    Joined:
    Oct 21, 2015
    Posts:
    16
    SUPER! I'll inspect it
     
  44. JohnBro

    JohnBro

    Joined:
    Oct 21, 2015
    Posts:
    16
    Interesting and simple realization of Unity_ExtBrushMaterial. But no any example of AA triangulated geometry for this special brush, just for Solid. Or I can't find...
    Also I can't find anything related to Pen in Backend. What is the technic are you using to render Pens?
     
  45. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi JohnBro,
    As said before an AA triangulated geometry contains tcoords (and also additional vertices) for the special AA-texture. So if you want to process AA-triangulated geometry with a special shader you must create this shader able to apply this AA-texture. In the demo we don't use any custom created shaders, so it's because we didn't process AA-triangulated geometry.
    Traditionanlly pens processed by brushes. Pens just prepared geometry in a special way (stroking, outlining, dotting, dashing, etc.) and then used brushes to render this geometry. But we are already thinking about to give the possibility of rendering pens by special custom way and with custom shaders of course. But all these drawings presented below are rendered by standard AltSketch pens and brushes:

    AltSketch OxyPlot - Legend


    AltSketch OxyPlot - Mandelbrot


    AltSketch NPlot Particles


    AltSketch OxyPlot


    AltSketch OxyPlot - Two-Color Line Series


    AltSketch OxyPlot - Stern Series


    AltSketch OxyPlot - Rectangle Annotations


    AltSketch Outline SVG


    AltSketch Windows Phone NPlot


    AltSketch Windows Phone PDFsharp
     
    Last edited: Oct 24, 2015
    mikenison and JohnBro like this.
  46. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi community,

    As AltSDK is very complex solution, we decided to create some special forum threads showing a different areas of AltSDK and answering on questions about it. So we added a first special forum thread related to HTML/CSS View, PDFsharp AltSDK components HTML/CSS View – easy create Professional Look Views/Reports with PDF export.

    You are welcome to look & discuss it!

    AltSDK Unity UI Integration - HTML Panel


    AltSketch NeoAxis HTML Renderer

    HTML Renderer - Text


    HTML Renderer - Using the Code


    AltSketch Unity PDFsharp
     
    Last edited: Jan 8, 2017
    mikenison likes this.
  47. JohnBro

    JohnBro

    Joined:
    Oct 21, 2015
    Posts:
    16
    Thanks for answers. Will inspect it deeper
     
  48. JohnBro

    JohnBro

    Joined:
    Oct 21, 2015
    Posts:
    16
    I try to replace my FreeType uses by AltNETType, but can't find ANT_Init_FreeType and ANT_Done_FreeType funcs in Alt.NETType.ANT for AltNETType init and done
     
  49. AltSoftLab

    AltSoftLab

    Joined:
    Jul 25, 2014
    Posts:
    79
    Hi JohnBro,
    It's a standard question ;) Instead of FT_Init_FreeType & FT_Done_FreeType need to use ANT_Init_AltNETType & ANT_Done_AltNETType (a members of Alt.NETType.ANT static class).
     
    JohnBro likes this.
  50. JohnBro

    JohnBro

    Joined:
    Oct 21, 2015
    Posts:
    16
    Oh... of course it's AltNETType. Thanks