Generating Logos with a Generative Adversarial Neural Network Conditioned on Color

Total Page:16

File Type:pdf, Size:1020Kb

Generating Logos with a Generative Adversarial Neural Network Conditioned on Color LoGAN: Generating Logos with a Generative Adversarial Neural Network Conditioned on color Ajkel Mino Gerasimos Spanakis Department of Data Science and Knowledge Engineering Department of Data Science and Knowledge Engineering Maastricht University Maastricht University Maastricht, Netherlands Maastricht, Netherlands [email protected] [email protected] Abstract—Designing a logo is a long, complicated, and expen- et al. [6] to be only one to have tackled this problem thus sive process for any designer. However, recent advancements in far. They propose a clustered approach for dealing with multi- generative algorithms provide models that could offer a possible modal data, specifically logos. Logos get assigned synthetic solution. Logos are multi-modal, have very few categorical prop- erties, and do not have a continuous latent space. Yet, conditional labels, defined by the cluster they belong to, and a GAN generative adversarial networks can be used to generate logos is trained, conditioned on these labels. However, synthetic that could help designers in their creative process. We propose labels do not provide enough flexibility. The need for more LoGAN: an improved auxiliary classifier Wasserstein generative descriptive labels arises: labels that could better convey what is adversarial neural network (with gradient penalty) that is able in the logos, and present designers with more detailed selection to generate logos conditioned on twelve different colors. In 768 generated instances (12 classes and 64 logos per class), when criteria. looking at the most prominent color, the conditional generation This paper provides a first step to more expressive and part of the model has an overall precision and recall of 0.8 and 0.7 informative labels instead of synthetic ones, which is achieved respectively. LoGAN’s results offer a first glance at how artificial by defining logos using their most prominent color. Twelve intelligence can be used to assist designers in their creative color classes are introduced: black, blue, brown, cyan, gray, process and open promising future directions, such as including more descriptive labels which will provide a more exhaustive and green, orange, pink, purple, red, white, and yellow. We propose easy-to-use system. LoGAN: an improved Auxiliary Classifier Wasserstein Gen- Index Terms—Conditional Generative Adversarial Neural Net- erative Adversarial Neural Network (with Gradient Penalty) work, Logo generation (AC-WGAN-GP) that is able to generate logos conditioned on the aforementioned twelve colors. I. INTRODUCTION The rest of this paper is structured as follows: In Section Designing a logo is a lengthy process that requires continu- 2 the related work and background will be discussed, then ous collaboration between the designers and their clients. Each in Section 3 the proposed architecture be conveyed, followed drafted logo takes time and effort to be designed, which turns by Section 4, where the dataset and labeling process will this creative process into a tedious and expensive endeavor. be explained. Section 5 presents the experimental results, Recent advancements in generative models suggest a possi- consisting of the training details and results, and finally we ble use of artificial intelligence as a solution to this problem. conclude and discuss some possible extensions of this work Specifically, Generative Adversarial Neural Networks (GANs) in Section 6. [1], which learn how to mimic any distribution of data. They II. BACKGROUND &RELATED WORK consist of two neural networks, a generator and a discrimina- arXiv:1810.10395v1 [cs.CV] 23 Oct 2018 tor, that are contended against each other, trying to reach a First proposed in 2014 by Goodfellow et al. [1], GANs have Nash Equilibrium [2] in a minimax game. seen a rise in popularity during the last couple of years, after possible solutions to training instability and mode collapse Whilst GANs and other generative models have been used were introduced [7]–[9]. to generate almost anything, from MNIST digits [1] to anime faces [3], Mario levels [4] and fake celebrities [5], logo A. Generative Adversarial Networks generation has yet to receive thorough exploration. One pos- GANs (architecture depicted in Fig.1(a)) consist of two sible explanation is that logos do not contain a hierarchy different neural networks, a generator and a discriminator, that of nested segments, which networks can learn and try to are trained simultaneously in a competitive manner. reproduce. Furthermore, their latent space is not continuous, The generator is fed a noise vector (G(z)) from a probability meaning that not every generated logo will necessarily be distribution (p ), and outputs a generated data-point (fake aesthetically pleasing. To the best of our knowledge, Sage, z image). The discriminator takes its input either from the We gratefully acknowledge the support of Mediaan in this research espe- generator (the fake image) (D(G(z))) or from the training cially for providing the necessary computing resources. set (the real image) (D(x)) and is trained to distinguish Fig. 1. GAN, conditional GAN (CGAN) and auxiliary classifier GAN (ACGAN) architectures, where x denotes the real image, c the class label, z the noise vector, G the Generator, and D the Discriminator. between the two. The discriminator and the generator play a C. GAN Applications two-player minimax game with value function (1), where the These different GAN architectures have been used for discriminator tries to maximize V, while the generator tries to numerous purposes, including (but not limited to): higher- minimize it. quality image generation [5], [17], image blending [18], image super-resolution [19] and object detection [20]. Up until the writing of this paper, logo generation has min max V (D; G) = Ex∼pdata [log D(x)] (1) G D previously only been investigated by Sage et al. [6], who + [log(1 − D(G(z)))] Ez∼pz accomplish three main things: 1) Objective functions: While GANs are able to gen- • Define the Large Logo Dataset (LLD) [21] erate high-quality images, they are notoriously difficult to • Synthetically label the logos by clustering them using the train. They suffer from problems like training stability, non- ResNet Classifier network convergence and mode collapse. Multiple improvements have • Build a GAN conditioned on these synthetic labels been suggested to fix these problems [7]–[9]; including using However, as these labels are defined from computer- deep convolutional layers for the networks [10] and modified generated clusters, they do not necessarily provide intuitive objective functions i.e. to least-squares [11] or to Wasserstein classes for a human designer. More descriptive labels, that distance between the distributions [12]–[14]. could provide designers with more detailed selection criteria and better convey what is in the logos are needed. B. Conditionality This paper offers a solution to the previous problem by: Conditional generation with GANs entails using labeled 1) Using twelve colors to define the logo classes data to generate images based on a certain class. The two types 2) Defining LoGAN: An AC-WGAN-GP that can condi- that will be discussed in the subsections below are Conditional tionally generate logos GANs and Auxiliary Classifier GANs. 1) Conditional GANs: In a conditional GAN (CGAN) [15] III. PROPOSED ARCHITECTURE (architecture depicted in Fig.1(b)) the discriminator and the The proposed architecture for LoGAN is an Auxiliary Clas- generator are conditioned on c, which could be a class label sifier Wasserstein Generative Adversarial Neural Network with or some data from another modality. The input and c are gradient penalty (AC-WGAN-GP), depicted on Fig.2. LoGAN combined in a joint hidden representation and fed as an is based on the ACGAN architecture , with the main difference additional input layer in both networks. being that it consists of three neural networks, namely the 2) Auxiliary Classifier GANs: Contrary to CGANs, in Aux- discriminator, the generator and an additional classification iliary Classifier GANs (AC-GAN) [16] (architecture depicted network 1. The latter is responsible for assisting the discrimi- z in Fig.1(c)) the latent space is conditioned on the class label. nator in classifying the logos, as the original classification loss The discriminator is forced to identify fake and real images, as well as the class of the image, irrespective of whether it is 1Code for this paper is available via fake or real. https://github.com/ajki/LoGAN from AC-GAN was dominated by the Wasserstein distance trained once for every 5 iterations of discriminator training, used by the WGAN-GP. as suggested by Gulrajan et al. [14], z was sampled from a Gaussian Distribution [22], and batch normalization was used [23]. IV. DATA The dataset used to train LoGAN is the LLD-icons dataset [21], which consists of 486’377 32 × 32 icons. 1) Labeling: To extract the most prominent color from the image a k-Means algorithm with k = 3 was used to define the RGB values of the centroids. The algorithm makes use of the MiniBatchKMeans implementation from sci-kit learn package, and the package webcolors was used to turn the RGB values into color words. The preliminary colors consisted of X11 color names 2, which were grouped into 12 main classes: black, blue, brown, cyan, gray, green, orange, pink, purple, red, white, and yellow. The class distribution can be observed in Fig.3. Fig. 2. LoGAN architecture, where x denotes the real image, c the class label, z the noise vector, G the Generator, D the Discriminator and Q the Classifier In an original AC-GAN [16] the discriminator is forced to optimize the classification loss together with the real-fake loss. This is shown in equations (2) & (3), which describe the loss from defining the source of the image (training set or generator) and the loss from defining the class of the image respectively. The adversarial aspect of AC-GAN comes as the ACGAN ACGAN discriminator tries to maximize LClass + LSource , whilst ACGAN ACGAN the generator tries to maximize LClass − LSource [16].
Recommended publications
  • A Font Family Sampler
    A Font Family Sampler Nelson H. F. Beebe Department of Mathematics University of Utah Salt Lake City, UT 84112-0090, USA 11 February 2021 Version 1.6 To assist in producing greater font face variation in university disser- tations and theses, this document illustrates font family selection with a LATEX document preamble command \usepackage{FAMILY} where FAMILY is given in the subsection titles below. The body font in this document is from the TEX Gyre Bonum family, selected by a \usepackage{tgbonum} command in the document preamble, but the samples illustrate scores other font families. Like Computer Modern, Latin Modern, and the commercial Lucida and MathTime families, the TEX Gyre families oer extensive collections of mathematical characters that are designed to resemble their companion text characters, making them good choices for scientic and mathemati- cal typesetting. The TEX Gyre families also contain many additional spe- cially designed single glyphs for accented letters needed by several Euro- pean languages, such as Ð, ð, Ą, ą, Ę, ę, Ł, ł, Ö, ö, Ő, ő, Ü, ü, Ű, ű, Ş, ş, T,˚ t,˚ Ţ, ţ, U,˚ and u.˚ Comparison of text fonts Some of the families illustrated in this section include distinct mathemat- ics faces, but for brevity, we show only prose. When a font family is not chosen, the LATEX and Plain TEX default is the traditional Computer Mod- ern family used to typeset the Art of Computer Programming books, and shown in the rst subsection. 1 A Font Family Sampler 2 NB: The LuxiMono font has rather large characters: it is used here in 15% reduced size via these preamble commands: \usepackage[T1]{fontenc} % only encoding available for LuxiMono \usepackage[scaled=0.85]{luximono} \usepackage{} % cmr Lorem ipsum dolor sit amet, aenean nulla tellus metus odio non maecenas, pariatur vitae congue laoreet semper, nulla adipiscing cursus neque dolor dui, faucibus aliquam quis.
    [Show full text]
  • An Introduction to the X Window System Introduction to X's Anatomy
    An Introduction to the X Window System Robert Lupton This is a limited and partisan introduction to ‘The X Window System’, which is widely but improperly known as X-windows, specifically to version 11 (‘X11’). The intention of the X-project has been to provide ‘tools not rules’, which allows their basic system to appear in a very large number of confusing guises. This document assumes that you are using the configuration that I set up at Peyton Hall † There are helpful manual entries under X and Xserver, as well as for individual utilities such as xterm. You may need to add /usr/princeton/X11/man to your MANPATH to read the X manpages. This is the first draft of this document, so I’d be very grateful for any comments or criticisms. Introduction to X’s Anatomy X consists of three parts: The server The part that knows about the hardware and how to draw lines and write characters. The Clients Such things as terminal emulators, dvi previewers, and clocks and The Window Manager A programme which handles negotiations between the different clients as they fight for screen space, colours, and sunlight. Another fundamental X-concept is that of resources, which is how X describes any- thing that a client might want to specify; common examples would be fonts, colours (both foreground and background), and position on the screen. Keys X can, and usually does, use a number of special keys. You are familiar with the way that <shift>a and <ctrl>a are different from a; in X this sensitivity extends to things like mouse buttons that you might not normally think of as case-sensitive.
    [Show full text]
  • Oracle® Secure Global Desktop Platform Support and Release Notes for Release 4.7
    Oracle® Secure Global Desktop Platform Support and Release Notes for Release 4.7 E26357-02 November 2012 Oracle® Secure Global Desktop: Platform Support and Release Notes for Release 4.7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S.
    [Show full text]
  • X Window System Network Performance
    X Window System Network Performance Keith Packard Cambridge Research Laboratory, HP Labs, HP [email protected] James Gettys Cambridge Research Laboratory, HP Labs, HP [email protected] Abstract havior (or on a local machine, context switches between the application and the X server). Performance was an important issue in the develop- One of the authors used the network visualization tool ment of X from the initial protocol design and contin- when analyzing the design of HTTP/1.1 [NGBS 97]. ues to be important in modern application and extension The methodology and tools used in that analysis in- development. That X is network transparent allows us volved passive packet level monitoring of traffic which to analyze the behavior of X from a perspective seldom allowed precise real-world measurements and compar- possible in most systems. We passively monitor network isons. The work described in this paper combines this packet flow to measure X application and server perfor- passive packet capture methodology with additional X mance. The network simulation environment, the data protocol specific analysis and visualization. Our experi- capture tool and data analysis tools will be presented. ence with this combination of the general technique with Data from this analysis are used to show the performance X specific additions was very positive and we believe impact of the Render extension, the limitations of the provides a powerful tool that could be used in the analy- LBX extension and help identify specific application and sis of other widely used protocols. toolkit performance problems. We believe this analysis With measurement tools in hand, we set about char- technique can be usefully applied to other network pro- acterizing the performance of a significant selection of tocols.
    [Show full text]
  • FLTK 1.1.8 Programming Manual Revision 8
    FLTK 1.1.8 Programming Manual Revision 8 Written by Michael Sweet, Craig P. Earls, Matthias Melcher, and Bill Spitzak Copyright 1998-2006 by Bill Spitzak and Others. FLTK 1.1.8 Programming Manual Table of Contents Preface..................................................................................................................................................................1 Organization.............................................................................................................................................1 Conventions.............................................................................................................................................2 Abbreviations...........................................................................................................................................2 Copyrights and Trademarks.....................................................................................................................2 1 - Introduction to FLTK...................................................................................................................................3 History of FLTK......................................................................................................................................3 Features....................................................................................................................................................4 Licensing..................................................................................................................................................5
    [Show full text]
  • Striptool Users Guide.Pdf
    StripTool Users Guide 2008/10/24 8:01 AM StripTool Users Guide Kenneth Evans, Jr. November 2002 Advanced Photon Source Argonne National Laboratory 9700 South Cass Avenue Argonne, IL 60439 Table of Contents Introduction Overview History Starting StripTool Configuration Files Environment Variables Controls Window Menubar Graph Window Graph Legend Toolbar Popup Menu History Customization Acknowledgements Copyright Introduction Overview StripTool is a Motif application that allows you to view the time evolution of one or more process variables on a strip chart. It is designed to work with EPICS or CDEV and is maintained as an EPICS Extension. There are two main windows: The Controls Dialog and the Graph. The Controls Dialog allows you to specify and modify the process variable name and the graph parameters corresponding to each curve that is plotted. It also allows you to specify timing parameters and graph properties. The curves are plotted in real time on the Graph. There are buttons on the Graph that allow you to do things like zoom and pan, and there is a popup menu that allows http://www.aps.anl.gov/epics/EpicsDocumentation/ExtensionsManuals/StripTool/StripTool.html Page 1 of 10 StripTool Users Guide 2008/10/24 8:01 AM you to do things like print the graph and save the data in ASCII or SDDS format. StripTool was designed for UNIX but also runs on Microsoft Windows 95, 98, ME, 2000, and XP, collectively labeled here as WIN32. An X server and the X and Motif libraries are needed. For information on obtaining StripTool, consult the EPICS Documentation.
    [Show full text]
  • IN ACTION Understanding Data with Graphs SECOND EDITION
    Covers gnuplot version 5 IN ACTION Understanding data with graphs SECOND EDITION Philipp K. Janert MANNING Gnuplot in Action by Philipp K. Janert Chapter 2 Copyright 2016 Manning Publications brief contents PART 1GETTING STARTED............................................................ 1 1 ■ Prelude: understanding data with gnuplot 3 2 ■ Tutorial: essential gnuplot 16 3 ■ The heart of the matter: the plot command 31 PART 2CREATING GRAPHS ......................................................... 53 4 ■ Managing data sets and files 55 5 ■ Practical matters: strings, loops, and history 78 6 ■ A catalog of styles 100 7 ■ Decorations: labels, arrows, and explanations 125 8 ■ All about axes 146 PART 3MASTERING TECHNICALITIES......................................... 179 9 ■ Color, style, and appearance 181 10 ■ Terminals and output formats 209 11 ■ Automation, scripting, and animation 236 12 ■ Beyond the defaults: workflow and styles 262 PART 4UNDERSTANDING DATA ................................................. 287 13 ■ Basic techniques of graphical analysis 289 14 ■ Topics in graphical analysis 314 15 ■ Coda: understanding data with graphs 344 vii Color, style, and appearance This chapter covers Global appearance options Color Lines and points Size and aspect ratio Whereas the previous few chapters dealt with very local aspects of a graph (such as an individual curve, a single text label, or the details of tic mark formatting), the present chapter addresses global issues. We begin with a long and important sec- tion on color. Color is an exciting topic, and it opens a range of options for data visualization; I’ll explain gnuplot’s support for color handling in detail. Next, we discuss a few details that matter if you want to modify the default appearance of point types, dash patterns, and the automatic selection of visual styles.
    [Show full text]
  • Package 'Snp.Plotter'
    Package ‘snp.plotter’ February 15, 2013 Version 0.4 Date 2011-05-11 Title snp.plotter Author Augustin Luna <[email protected]>, Kristin K. Nicodemus <[email protected]>, <[email protected]> Maintainer Augustin Luna <[email protected]> Depends R (>= 2.0.0), genetics, grid Description Creates plots of p-values using single SNP and/or haplotype data. Main features of the package include options to display a linkage disequilibrium (LD) plot and the ability to plot multiple datasets simultaneously. Plots can be created using global and/or individual haplotype p-values along with single SNP p-values. Images are created as either PDF/EPS files. License GPL (>= 2) URL http://cbdb.nimh.nih.gov/~kristin/snp.plotter.html Repository CRAN Date/Publication 2012-10-29 08:59:47 NeedsCompilation no R topics documented: snp.plotter . .2 Index 7 1 2 snp.plotter snp.plotter SNP/haplotype association p-value and linkage disequilibrium plotter Description Creates plots of p-values using single SNP and/or haplotype data. Main features of the package include options to display a linkage disequilibrium (LD) plot and the ability to plot multiple set of results simultaneously. Plots can be created using global and/or individual haplotype p-values along with single SNP p-values. Images are created as either PDF/EPS files. Usage snp.plotter(EVEN.SPACED = FALSE, PVAL.THRESHOLD = 1, USE.GBL.PVAL = TRUE, SYMBOLS = NA, SAMPLE.LABELS = NULL, LAB.Y = "log", DISP.HAP = FALSE, DISP.SNP = TRUE, DISP.COLOR.BAR = TRUE, DISP.PHYS.DIST = TRUE, DISP.LEGEND
    [Show full text]
  • Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference
    USENIX Association Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference Monterey, California, USA June 10-15, 2002 THE ADVANCED COMPUTING SYSTEMS ASSOCIATION © 2002 by The USENIX Association All Rights Reserved For more information about the USENIX Association: Phone: 1 510 528 8649 FAX: 1 510 548 5738 Email: [email protected] WWW: http://www.usenix.org Rights to individual papers remain with the author or the author's employer. Permission is granted for noncommercial reproduction of the work for educational or research purposes. This copyright notice must be included in the reproduced paper. USENIX acknowledges all trademarks herein. XCL : An Xlib Compatibility Layer For XCB Jamey Sharp Bart Massey Computer Science Department Portland State University Portland, Oregon USA 97207–0751 fjamey,[email protected] Abstract 1 The X Window System The X Window System [SG86] is the de facto standard technology for UNIX applications wishing to provide a graphical user interface. The power and success of the X model is due in no small measure to its separation of The X Window System has provided the standard graph- hardware control from application logic with a stable, ical user interface for UNIX systems for more than 15 published client-server network protocol. In this model, years. One result is a large installed base of X applica- the hardware controller is considered the server, and in- tions written in C and C++. In almost all cases, these dividual applications and other components of a com- programs rely on the Xlib library to manage their inter- plete desktop environment are clients.
    [Show full text]
  • Graphics Reference (Graphics.Py V5) 1 Overview
    Graphics Reference (graphics.py v5) 1 Overview The package graphics.py is a simple object oriented graphics library designed to make it very easy for novice programmers to experiment with computer graphics in an object oriented fashion. It was written by John Zelle for use with the book \Python Programming: An Introduction to Computer Science" (Franklin, Beedle & Associates). The most recent version of the library can obtained at http://mcsp.wartburg.edu/zelle/python. This document is a reference to the functionality provided in the library. See the comments in the file for installation instructions. There are two kinds of objects in the library. The GraphWin class implements a window where drawing can be done, and various graphics objects are provided that can be drawn into a GraphWin. As a simple example, here is a complete program to draw a circle of radius 10 centered in a 100x100 window: from graphics import * def main(): win = GraphWin("My Circle", 100, 100) c = Circle(Point(50,50), 10) c.draw(win) win.getMouse() # pause for click in window win.close() main() GraphWin objects support coordinate transformation through the setCoords method and input via mouse or keyboard. The library provides the following graphical objects: Point, Line, Circle, Oval, Rectangle, Polygon, Text, Entry (for text-based input), and Image. Various attributes of graphical objects can be set such as outline-color, fill-color, and line-width. Graphical objects also support moving and undrawing for animation effects. 2 GraphWin Objects A GraphWin object represents a window on the screen where graphical images may be drawn.
    [Show full text]
  • Polychrome: Creating and Assessing Qualitative Palettes with Many Colors
    bioRxiv preprint doi: https://doi.org/10.1101/303883; this version posted April 18, 2018. The copyright holder for this preprint (which was not certified by peer review) is the author/funder, who has granted bioRxiv a license to display the preprint in perpetuity. It is made available under aCC-BY 4.0 International license. JSS Journal of Statistical Software MMMMMM YYYY, Volume VV, Code Snippet II. http://www.jstatsoft.org/ Polychrome: Creating and Assessing Qualitative Palettes With Many Colors Kevin R. Coombes Guy Brock Zachary B. Abrams The Ohio State University The Ohio State University The Ohio State University Lynne V. Abruzzo The Ohio State University Abstract Although R includes numerous tools for creating color palettes to display continuous data, facilities for displaying categorical data primarily use the RColorBrewer package, which is, by default, limited to 12 colors. The colorspace package can produce more colors, but it is not immediately clear how to use it to produce colors that can be reliably distingushed in different kinds of plots. However, applications to genomics would be enhanced by the ability to display at least the 24 human chromosomes in distinct colors, as is common in technologies like spectral karyotyping. In this article, we describe the Polychrome package, which can be used to construct palettes with at least 24 colors that can be distinguished by most people with normal color vision. Polychrome includes a variety of visualization methods allowing users to evaluate the proposed palettes. In addition, we review the history of attempts to construct qualitative color palettes with many colors. Keywords: color, palette, categorical data, spectral karyotyping, R.
    [Show full text]
  • FLTK 1.1.10 Programming Manual Revision 10
    FLTK 1.1.10 Programming Manual Revision 10 Written by Michael Sweet, Craig P. Earls, Matthias Melcher, and Bill Spitzak Copyright 1998-2009 by Bill Spitzak and Others. FLTK 1.1.10 Programming Manual Table of Contents Preface..................................................................................................................................................................1 Organization.............................................................................................................................................1 Conventions.............................................................................................................................................2 Abbreviations...........................................................................................................................................2 Copyrights and Trademarks.....................................................................................................................2 1 - Introduction to FLTK...................................................................................................................................3 History of FLTK......................................................................................................................................3 Features....................................................................................................................................................4 Licensing..................................................................................................................................................5
    [Show full text]