diff --git a/example/src/main/java/FontAwesomeIcons.java b/example/src/main/java/FontAwesomeIcons.java new file mode 100644 index 00000000..1ba64a21 --- /dev/null +++ b/example/src/main/java/FontAwesomeIcons.java @@ -0,0 +1,1015 @@ +/** + * Font Awesome icons codepoints, can be used to render icons with imgui in any place where text can be rendered. + * + * To preview and search for icons use: https://fontawesome.com/icons?d=gallery&p=2&m=free + */ +@SuppressWarnings("unused") +public class FontAwesomeIcons { + + public static short _IconRangeMin = (short) 0xe005; + public static short _IconRangeMax = (short) 0xf8ff; + public static short[] _IconRange = new short[]{_IconRangeMin, _IconRangeMax, 0}; + + public static String Ad = "\uf641"; + public static String AddressBook = "\uf2b9"; + public static String AddressCard = "\uf2bb"; + public static String Adjust = "\uf042"; + public static String AirFreshener = "\uf5d0"; + public static String AlignCenter = "\uf037"; + public static String AlignJustify = "\uf039"; + public static String AlignLeft = "\uf036"; + public static String AlignRight = "\uf038"; + public static String Allergies = "\uf461"; + public static String Ambulance = "\uf0f9"; + public static String AmericanSignLanguageInterpreting = "\uf2a3"; + public static String Anchor = "\uf13d"; + public static String AngleDoubleDown = "\uf103"; + public static String AngleDoubleLeft = "\uf100"; + public static String AngleDoubleRight = "\uf101"; + public static String AngleDoubleUp = "\uf102"; + public static String AngleDown = "\uf107"; + public static String AngleLeft = "\uf104"; + public static String AngleRight = "\uf105"; + public static String AngleUp = "\uf106"; + public static String Angry = "\uf556"; + public static String Ankh = "\uf644"; + public static String AppleAlt = "\uf5d1"; + public static String Archive = "\uf187"; + public static String Archway = "\uf557"; + public static String ArrowAltCircleDown = "\uf358"; + public static String ArrowAltCircleLeft = "\uf359"; + public static String ArrowAltCircleRight = "\uf35a"; + public static String ArrowAltCircleUp = "\uf35b"; + public static String ArrowCircleDown = "\uf0ab"; + public static String ArrowCircleLeft = "\uf0a8"; + public static String ArrowCircleRight = "\uf0a9"; + public static String ArrowCircleUp = "\uf0aa"; + public static String ArrowDown = "\uf063"; + public static String ArrowLeft = "\uf060"; + public static String ArrowRight = "\uf061"; + public static String ArrowUp = "\uf062"; + public static String ArrowsAlt = "\uf0b2"; + public static String ArrowsAltH = "\uf337"; + public static String ArrowsAltV = "\uf338"; + public static String AssistiveListeningSystems = "\uf2a2"; + public static String Asterisk = "\uf069"; + public static String At = "\uf1fa"; + public static String Atlas = "\uf558"; + public static String Atom = "\uf5d2"; + public static String AudioDescription = "\uf29e"; + public static String Award = "\uf559"; + public static String Baby = "\uf77c"; + public static String BabyCarriage = "\uf77d"; + public static String Backspace = "\uf55a"; + public static String Backward = "\uf04a"; + public static String Bacon = "\uf7e5"; + public static String Bacteria = "\ue059"; + public static String Bacterium = "\ue05a"; + public static String Bahai = "\uf666"; + public static String BalanceScale = "\uf24e"; + public static String BalanceScaleLeft = "\uf515"; + public static String BalanceScaleRight = "\uf516"; + public static String Ban = "\uf05e"; + public static String BandAid = "\uf462"; + public static String Barcode = "\uf02a"; + public static String Bars = "\uf0c9"; + public static String BaseballBall = "\uf433"; + public static String BasketballBall = "\uf434"; + public static String Bath = "\uf2cd"; + public static String BatteryEmpty = "\uf244"; + public static String BatteryFull = "\uf240"; + public static String BatteryHalf = "\uf242"; + public static String BatteryQuarter = "\uf243"; + public static String BatteryThreeQuarters = "\uf241"; + public static String Bed = "\uf236"; + public static String Beer = "\uf0fc"; + public static String Bell = "\uf0f3"; + public static String BellSlash = "\uf1f6"; + public static String BezierCurve = "\uf55b"; + public static String Bible = "\uf647"; + public static String Bicycle = "\uf206"; + public static String Biking = "\uf84a"; + public static String Binoculars = "\uf1e5"; + public static String Biohazard = "\uf780"; + public static String BirthdayCake = "\uf1fd"; + public static String Blender = "\uf517"; + public static String BlenderPhone = "\uf6b6"; + public static String Blind = "\uf29d"; + public static String Blog = "\uf781"; + public static String Bold = "\uf032"; + public static String Bolt = "\uf0e7"; + public static String Bomb = "\uf1e2"; + public static String Bone = "\uf5d7"; + public static String Bong = "\uf55c"; + public static String Book = "\uf02d"; + public static String BookDead = "\uf6b7"; + public static String BookMedical = "\uf7e6"; + public static String BookOpen = "\uf518"; + public static String BookReader = "\uf5da"; + public static String Bookmark = "\uf02e"; + public static String BorderAll = "\uf84c"; + public static String BorderNone = "\uf850"; + public static String BorderStyle = "\uf853"; + public static String BowlingBall = "\uf436"; + public static String Box = "\uf466"; + public static String BoxOpen = "\uf49e"; + public static String BoxTissue = "\ue05b"; + public static String Boxes = "\uf468"; + public static String Braille = "\uf2a1"; + public static String Brain = "\uf5dc"; + public static String BreadSlice = "\uf7ec"; + public static String Briefcase = "\uf0b1"; + public static String BriefcaseMedical = "\uf469"; + public static String BroadcastTower = "\uf519"; + public static String Broom = "\uf51a"; + public static String Brush = "\uf55d"; + public static String Bug = "\uf188"; + public static String Building = "\uf1ad"; + public static String Bullhorn = "\uf0a1"; + public static String Bullseye = "\uf140"; + public static String Burn = "\uf46a"; + public static String Bus = "\uf207"; + public static String BusAlt = "\uf55e"; + public static String BusinessTime = "\uf64a"; + public static String Calculator = "\uf1ec"; + public static String Calendar = "\uf133"; + public static String CalendarAlt = "\uf073"; + public static String CalendarCheck = "\uf274"; + public static String CalendarDay = "\uf783"; + public static String CalendarMinus = "\uf272"; + public static String CalendarPlus = "\uf271"; + public static String CalendarTimes = "\uf273"; + public static String CalendarWeek = "\uf784"; + public static String Camera = "\uf030"; + public static String CameraRetro = "\uf083"; + public static String Campground = "\uf6bb"; + public static String CandyCane = "\uf786"; + public static String Cannabis = "\uf55f"; + public static String Capsules = "\uf46b"; + public static String Car = "\uf1b9"; + public static String CarAlt = "\uf5de"; + public static String CarBattery = "\uf5df"; + public static String CarCrash = "\uf5e1"; + public static String CarSide = "\uf5e4"; + public static String Caravan = "\uf8ff"; + public static String CaretDown = "\uf0d7"; + public static String CaretLeft = "\uf0d9"; + public static String CaretRight = "\uf0da"; + public static String CaretSquareDown = "\uf150"; + public static String CaretSquareLeft = "\uf191"; + public static String CaretSquareRight = "\uf152"; + public static String CaretSquareUp = "\uf151"; + public static String CaretUp = "\uf0d8"; + public static String Carrot = "\uf787"; + public static String CartArrowDown = "\uf218"; + public static String CartPlus = "\uf217"; + public static String CashRegister = "\uf788"; + public static String Cat = "\uf6be"; + public static String Certificate = "\uf0a3"; + public static String Chair = "\uf6c0"; + public static String Chalkboard = "\uf51b"; + public static String ChalkboardTeacher = "\uf51c"; + public static String ChargingStation = "\uf5e7"; + public static String ChartArea = "\uf1fe"; + public static String ChartBar = "\uf080"; + public static String ChartLine = "\uf201"; + public static String ChartPie = "\uf200"; + public static String Check = "\uf00c"; + public static String CheckCircle = "\uf058"; + public static String CheckDouble = "\uf560"; + public static String CheckSquare = "\uf14a"; + public static String Cheese = "\uf7ef"; + public static String Chess = "\uf439"; + public static String ChessBishop = "\uf43a"; + public static String ChessBoard = "\uf43c"; + public static String ChessKing = "\uf43f"; + public static String ChessKnight = "\uf441"; + public static String ChessPawn = "\uf443"; + public static String ChessQueen = "\uf445"; + public static String ChessRook = "\uf447"; + public static String ChevronCircleDown = "\uf13a"; + public static String ChevronCircleLeft = "\uf137"; + public static String ChevronCircleRight = "\uf138"; + public static String ChevronCircleUp = "\uf139"; + public static String ChevronDown = "\uf078"; + public static String ChevronLeft = "\uf053"; + public static String ChevronRight = "\uf054"; + public static String ChevronUp = "\uf077"; + public static String Child = "\uf1ae"; + public static String Church = "\uf51d"; + public static String Circle = "\uf111"; + public static String CircleNotch = "\uf1ce"; + public static String City = "\uf64f"; + public static String ClinicMedical = "\uf7f2"; + public static String Clipboard = "\uf328"; + public static String ClipboardCheck = "\uf46c"; + public static String ClipboardList = "\uf46d"; + public static String Clock = "\uf017"; + public static String Clone = "\uf24d"; + public static String ClosedCaptioning = "\uf20a"; + public static String Cloud = "\uf0c2"; + public static String CloudDownloadAlt = "\uf381"; + public static String CloudMeatball = "\uf73b"; + public static String CloudMoon = "\uf6c3"; + public static String CloudMoonRain = "\uf73c"; + public static String CloudRain = "\uf73d"; + public static String CloudShowersHeavy = "\uf740"; + public static String CloudSun = "\uf6c4"; + public static String CloudSunRain = "\uf743"; + public static String CloudUploadAlt = "\uf382"; + public static String Cocktail = "\uf561"; + public static String Code = "\uf121"; + public static String CodeBranch = "\uf126"; + public static String Coffee = "\uf0f4"; + public static String Cog = "\uf013"; + public static String Cogs = "\uf085"; + public static String Coins = "\uf51e"; + public static String Columns = "\uf0db"; + public static String Comment = "\uf075"; + public static String CommentAlt = "\uf27a"; + public static String CommentDollar = "\uf651"; + public static String CommentDots = "\uf4ad"; + public static String CommentMedical = "\uf7f5"; + public static String CommentSlash = "\uf4b3"; + public static String Comments = "\uf086"; + public static String CommentsDollar = "\uf653"; + public static String CompactDisc = "\uf51f"; + public static String Compass = "\uf14e"; + public static String Compress = "\uf066"; + public static String CompressAlt = "\uf422"; + public static String CompressArrowsAlt = "\uf78c"; + public static String ConciergeBell = "\uf562"; + public static String Cookie = "\uf563"; + public static String CookieBite = "\uf564"; + public static String Copy = "\uf0c5"; + public static String Copyright = "\uf1f9"; + public static String Couch = "\uf4b8"; + public static String CreditCard = "\uf09d"; + public static String Crop = "\uf125"; + public static String CropAlt = "\uf565"; + public static String Cross = "\uf654"; + public static String Crosshairs = "\uf05b"; + public static String Crow = "\uf520"; + public static String Crown = "\uf521"; + public static String Crutch = "\uf7f7"; + public static String Cube = "\uf1b2"; + public static String Cubes = "\uf1b3"; + public static String Cut = "\uf0c4"; + public static String Database = "\uf1c0"; + public static String Deaf = "\uf2a4"; + public static String Democrat = "\uf747"; + public static String Desktop = "\uf108"; + public static String Dharmachakra = "\uf655"; + public static String Diagnoses = "\uf470"; + public static String Dice = "\uf522"; + public static String DiceD20 = "\uf6cf"; + public static String DiceD6 = "\uf6d1"; + public static String DiceFive = "\uf523"; + public static String DiceFour = "\uf524"; + public static String DiceOne = "\uf525"; + public static String DiceSix = "\uf526"; + public static String DiceThree = "\uf527"; + public static String DiceTwo = "\uf528"; + public static String DigitalTachograph = "\uf566"; + public static String Directions = "\uf5eb"; + public static String Disease = "\uf7fa"; + public static String Divide = "\uf529"; + public static String Dizzy = "\uf567"; + public static String Dna = "\uf471"; + public static String Dog = "\uf6d3"; + public static String DollarSign = "\uf155"; + public static String Dolly = "\uf472"; + public static String DollyFlatbed = "\uf474"; + public static String Donate = "\uf4b9"; + public static String DoorClosed = "\uf52a"; + public static String DoorOpen = "\uf52b"; + public static String DotCircle = "\uf192"; + public static String Dove = "\uf4ba"; + public static String Download = "\uf019"; + public static String DraftingCompass = "\uf568"; + public static String Dragon = "\uf6d5"; + public static String DrawPolygon = "\uf5ee"; + public static String Drum = "\uf569"; + public static String DrumSteelpan = "\uf56a"; + public static String DrumstickBite = "\uf6d7"; + public static String Dumbbell = "\uf44b"; + public static String Dumpster = "\uf793"; + public static String DumpsterFire = "\uf794"; + public static String Dungeon = "\uf6d9"; + public static String Edit = "\uf044"; + public static String Egg = "\uf7fb"; + public static String Eject = "\uf052"; + public static String EllipsisH = "\uf141"; + public static String EllipsisV = "\uf142"; + public static String Envelope = "\uf0e0"; + public static String EnvelopeOpen = "\uf2b6"; + public static String EnvelopeOpenText = "\uf658"; + public static String EnvelopeSquare = "\uf199"; + public static String Equals = "\uf52c"; + public static String Eraser = "\uf12d"; + public static String Ethernet = "\uf796"; + public static String EuroSign = "\uf153"; + public static String ExchangeAlt = "\uf362"; + public static String Exclamation = "\uf12a"; + public static String ExclamationCircle = "\uf06a"; + public static String ExclamationTriangle = "\uf071"; + public static String Expand = "\uf065"; + public static String ExpandAlt = "\uf424"; + public static String ExpandArrowsAlt = "\uf31e"; + public static String ExternalLinkAlt = "\uf35d"; + public static String ExternalLinkSquareAlt = "\uf360"; + public static String Eye = "\uf06e"; + public static String EyeDropper = "\uf1fb"; + public static String EyeSlash = "\uf070"; + public static String Fan = "\uf863"; + public static String FastBackward = "\uf049"; + public static String FastForward = "\uf050"; + public static String Faucet = "\ue005"; + public static String Fax = "\uf1ac"; + public static String Feather = "\uf52d"; + public static String FeatherAlt = "\uf56b"; + public static String Female = "\uf182"; + public static String FighterJet = "\uf0fb"; + public static String File = "\uf15b"; + public static String FileAlt = "\uf15c"; + public static String FileArchive = "\uf1c6"; + public static String FileAudio = "\uf1c7"; + public static String FileCode = "\uf1c9"; + public static String FileContract = "\uf56c"; + public static String FileCsv = "\uf6dd"; + public static String FileDownload = "\uf56d"; + public static String FileExcel = "\uf1c3"; + public static String FileExport = "\uf56e"; + public static String FileImage = "\uf1c5"; + public static String FileImport = "\uf56f"; + public static String FileInvoice = "\uf570"; + public static String FileInvoiceDollar = "\uf571"; + public static String FileMedical = "\uf477"; + public static String FileMedicalAlt = "\uf478"; + public static String FilePdf = "\uf1c1"; + public static String FilePowerpoint = "\uf1c4"; + public static String FilePrescription = "\uf572"; + public static String FileSignature = "\uf573"; + public static String FileUpload = "\uf574"; + public static String FileVideo = "\uf1c8"; + public static String FileWord = "\uf1c2"; + public static String Fill = "\uf575"; + public static String FillDrip = "\uf576"; + public static String Film = "\uf008"; + public static String Filter = "\uf0b0"; + public static String Fingerprint = "\uf577"; + public static String Fire = "\uf06d"; + public static String FireAlt = "\uf7e4"; + public static String FireExtinguisher = "\uf134"; + public static String FirstAid = "\uf479"; + public static String Fish = "\uf578"; + public static String FistRaised = "\uf6de"; + public static String Flag = "\uf024"; + public static String FlagCheckered = "\uf11e"; + public static String FlagUsa = "\uf74d"; + public static String Flask = "\uf0c3"; + public static String Flushed = "\uf579"; + public static String Folder = "\uf07b"; + public static String FolderMinus = "\uf65d"; + public static String FolderOpen = "\uf07c"; + public static String FolderPlus = "\uf65e"; + public static String Font = "\uf031"; + public static String FontAwesomeLogoFull = "\uf4e6"; + public static String FootballBall = "\uf44e"; + public static String Forward = "\uf04e"; + public static String Frog = "\uf52e"; + public static String Frown = "\uf119"; + public static String FrownOpen = "\uf57a"; + public static String FunnelDollar = "\uf662"; + public static String Futbol = "\uf1e3"; + public static String Gamepad = "\uf11b"; + public static String GasPump = "\uf52f"; + public static String Gavel = "\uf0e3"; + public static String Gem = "\uf3a5"; + public static String Genderless = "\uf22d"; + public static String Ghost = "\uf6e2"; + public static String Gift = "\uf06b"; + public static String Gifts = "\uf79c"; + public static String GlassCheers = "\uf79f"; + public static String GlassMartini = "\uf000"; + public static String GlassMartiniAlt = "\uf57b"; + public static String GlassWhiskey = "\uf7a0"; + public static String Glasses = "\uf530"; + public static String Globe = "\uf0ac"; + public static String GlobeAfrica = "\uf57c"; + public static String GlobeAmericas = "\uf57d"; + public static String GlobeAsia = "\uf57e"; + public static String GlobeEurope = "\uf7a2"; + public static String GolfBall = "\uf450"; + public static String Gopuram = "\uf664"; + public static String GraduationCap = "\uf19d"; + public static String GreaterThan = "\uf531"; + public static String GreaterThanEqual = "\uf532"; + public static String Grimace = "\uf57f"; + public static String Grin = "\uf580"; + public static String GrinAlt = "\uf581"; + public static String GrinBeam = "\uf582"; + public static String GrinBeamSweat = "\uf583"; + public static String GrinHearts = "\uf584"; + public static String GrinSquint = "\uf585"; + public static String GrinSquintTears = "\uf586"; + public static String GrinStars = "\uf587"; + public static String GrinTears = "\uf588"; + public static String GrinTongue = "\uf589"; + public static String GrinTongueSquint = "\uf58a"; + public static String GrinTongueWink = "\uf58b"; + public static String GrinWink = "\uf58c"; + public static String GripHorizontal = "\uf58d"; + public static String GripLines = "\uf7a4"; + public static String GripLinesVertical = "\uf7a5"; + public static String GripVertical = "\uf58e"; + public static String Guitar = "\uf7a6"; + public static String HSquare = "\uf0fd"; + public static String Hamburger = "\uf805"; + public static String Hammer = "\uf6e3"; + public static String Hamsa = "\uf665"; + public static String HandHolding = "\uf4bd"; + public static String HandHoldingHeart = "\uf4be"; + public static String HandHoldingMedical = "\ue05c"; + public static String HandHoldingUsd = "\uf4c0"; + public static String HandHoldingWater = "\uf4c1"; + public static String HandLizard = "\uf258"; + public static String HandMiddleFinger = "\uf806"; + public static String HandPaper = "\uf256"; + public static String HandPeace = "\uf25b"; + public static String HandPointDown = "\uf0a7"; + public static String HandPointLeft = "\uf0a5"; + public static String HandPointRight = "\uf0a4"; + public static String HandPointUp = "\uf0a6"; + public static String HandPointer = "\uf25a"; + public static String HandRock = "\uf255"; + public static String HandScissors = "\uf257"; + public static String HandSparkles = "\ue05d"; + public static String HandSpock = "\uf259"; + public static String Hands = "\uf4c2"; + public static String HandsHelping = "\uf4c4"; + public static String HandsWash = "\ue05e"; + public static String Handshake = "\uf2b5"; + public static String HandshakeAltSlash = "\ue05f"; + public static String HandshakeSlash = "\ue060"; + public static String Hanukiah = "\uf6e6"; + public static String HardHat = "\uf807"; + public static String Hashtag = "\uf292"; + public static String HatCowboy = "\uf8c0"; + public static String HatCowboySide = "\uf8c1"; + public static String HatWizard = "\uf6e8"; + public static String Hdd = "\uf0a0"; + public static String HeadSideCough = "\ue061"; + public static String HeadSideCoughSlash = "\ue062"; + public static String HeadSideMask = "\ue063"; + public static String HeadSideVirus = "\ue064"; + public static String Heading = "\uf1dc"; + public static String Headphones = "\uf025"; + public static String HeadphonesAlt = "\uf58f"; + public static String Headset = "\uf590"; + public static String Heart = "\uf004"; + public static String HeartBroken = "\uf7a9"; + public static String Heartbeat = "\uf21e"; + public static String Helicopter = "\uf533"; + public static String Highlighter = "\uf591"; + public static String Hiking = "\uf6ec"; + public static String Hippo = "\uf6ed"; + public static String History = "\uf1da"; + public static String HockeyPuck = "\uf453"; + public static String HollyBerry = "\uf7aa"; + public static String Home = "\uf015"; + public static String Horse = "\uf6f0"; + public static String HorseHead = "\uf7ab"; + public static String Hospital = "\uf0f8"; + public static String HospitalAlt = "\uf47d"; + public static String HospitalSymbol = "\uf47e"; + public static String HospitalUser = "\uf80d"; + public static String HotTub = "\uf593"; + public static String Hotdog = "\uf80f"; + public static String Hotel = "\uf594"; + public static String Hourglass = "\uf254"; + public static String HourglassEnd = "\uf253"; + public static String HourglassHalf = "\uf252"; + public static String HourglassStart = "\uf251"; + public static String HouseDamage = "\uf6f1"; + public static String HouseUser = "\ue065"; + public static String Hryvnia = "\uf6f2"; + public static String ICursor = "\uf246"; + public static String IceCream = "\uf810"; + public static String Icicles = "\uf7ad"; + public static String Icons = "\uf86d"; + public static String IdBadge = "\uf2c1"; + public static String IdCard = "\uf2c2"; + public static String IdCardAlt = "\uf47f"; + public static String Igloo = "\uf7ae"; + public static String Image = "\uf03e"; + public static String Images = "\uf302"; + public static String Inbox = "\uf01c"; + public static String Indent = "\uf03c"; + public static String Industry = "\uf275"; + public static String Infinity = "\uf534"; + public static String Info = "\uf129"; + public static String InfoCircle = "\uf05a"; + public static String Italic = "\uf033"; + public static String Jedi = "\uf669"; + public static String Joint = "\uf595"; + public static String JournalWhills = "\uf66a"; + public static String Kaaba = "\uf66b"; + public static String Key = "\uf084"; + public static String Keyboard = "\uf11c"; + public static String Khanda = "\uf66d"; + public static String Kiss = "\uf596"; + public static String KissBeam = "\uf597"; + public static String KissWinkHeart = "\uf598"; + public static String KiwiBird = "\uf535"; + public static String Landmark = "\uf66f"; + public static String Language = "\uf1ab"; + public static String Laptop = "\uf109"; + public static String LaptopCode = "\uf5fc"; + public static String LaptopHouse = "\ue066"; + public static String LaptopMedical = "\uf812"; + public static String Laugh = "\uf599"; + public static String LaughBeam = "\uf59a"; + public static String LaughSquint = "\uf59b"; + public static String LaughWink = "\uf59c"; + public static String LayerGroup = "\uf5fd"; + public static String Leaf = "\uf06c"; + public static String Lemon = "\uf094"; + public static String LessThan = "\uf536"; + public static String LessThanEqual = "\uf537"; + public static String LevelDownAlt = "\uf3be"; + public static String LevelUpAlt = "\uf3bf"; + public static String LifeRing = "\uf1cd"; + public static String Lightbulb = "\uf0eb"; + public static String Link = "\uf0c1"; + public static String LiraSign = "\uf195"; + public static String List = "\uf03a"; + public static String ListAlt = "\uf022"; + public static String ListOl = "\uf0cb"; + public static String ListUl = "\uf0ca"; + public static String LocationArrow = "\uf124"; + public static String Lock = "\uf023"; + public static String LockOpen = "\uf3c1"; + public static String LongArrowAltDown = "\uf309"; + public static String LongArrowAltLeft = "\uf30a"; + public static String LongArrowAltRight = "\uf30b"; + public static String LongArrowAltUp = "\uf30c"; + public static String LowVision = "\uf2a8"; + public static String LuggageCart = "\uf59d"; + public static String Lungs = "\uf604"; + public static String LungsVirus = "\ue067"; + public static String Magic = "\uf0d0"; + public static String Magnet = "\uf076"; + public static String MailBulk = "\uf674"; + public static String Male = "\uf183"; + public static String Map = "\uf279"; + public static String MapMarked = "\uf59f"; + public static String MapMarkedAlt = "\uf5a0"; + public static String MapMarker = "\uf041"; + public static String MapMarkerAlt = "\uf3c5"; + public static String MapPin = "\uf276"; + public static String MapSigns = "\uf277"; + public static String Marker = "\uf5a1"; + public static String Mars = "\uf222"; + public static String MarsDouble = "\uf227"; + public static String MarsStroke = "\uf229"; + public static String MarsStrokeH = "\uf22b"; + public static String MarsStrokeV = "\uf22a"; + public static String Mask = "\uf6fa"; + public static String Medal = "\uf5a2"; + public static String Medkit = "\uf0fa"; + public static String Meh = "\uf11a"; + public static String MehBlank = "\uf5a4"; + public static String MehRollingEyes = "\uf5a5"; + public static String Memory = "\uf538"; + public static String Menorah = "\uf676"; + public static String Mercury = "\uf223"; + public static String Meteor = "\uf753"; + public static String Microchip = "\uf2db"; + public static String Microphone = "\uf130"; + public static String MicrophoneAlt = "\uf3c9"; + public static String MicrophoneAltSlash = "\uf539"; + public static String MicrophoneSlash = "\uf131"; + public static String Microscope = "\uf610"; + public static String Minus = "\uf068"; + public static String MinusCircle = "\uf056"; + public static String MinusSquare = "\uf146"; + public static String Mitten = "\uf7b5"; + public static String Mobile = "\uf10b"; + public static String MobileAlt = "\uf3cd"; + public static String MoneyBill = "\uf0d6"; + public static String MoneyBillAlt = "\uf3d1"; + public static String MoneyBillWave = "\uf53a"; + public static String MoneyBillWaveAlt = "\uf53b"; + public static String MoneyCheck = "\uf53c"; + public static String MoneyCheckAlt = "\uf53d"; + public static String Monument = "\uf5a6"; + public static String Moon = "\uf186"; + public static String MortarPestle = "\uf5a7"; + public static String Mosque = "\uf678"; + public static String Motorcycle = "\uf21c"; + public static String Mountain = "\uf6fc"; + public static String Mouse = "\uf8cc"; + public static String MousePointer = "\uf245"; + public static String MugHot = "\uf7b6"; + public static String Music = "\uf001"; + public static String NetworkWired = "\uf6ff"; + public static String Neuter = "\uf22c"; + public static String Newspaper = "\uf1ea"; + public static String NotEqual = "\uf53e"; + public static String NotesMedical = "\uf481"; + public static String ObjectGroup = "\uf247"; + public static String ObjectUngroup = "\uf248"; + public static String OilCan = "\uf613"; + public static String Om = "\uf679"; + public static String Otter = "\uf700"; + public static String Outdent = "\uf03b"; + public static String Pager = "\uf815"; + public static String PaintBrush = "\uf1fc"; + public static String PaintRoller = "\uf5aa"; + public static String Palette = "\uf53f"; + public static String Pallet = "\uf482"; + public static String PaperPlane = "\uf1d8"; + public static String Paperclip = "\uf0c6"; + public static String ParachuteBox = "\uf4cd"; + public static String Paragraph = "\uf1dd"; + public static String Parking = "\uf540"; + public static String Passport = "\uf5ab"; + public static String Pastafarianism = "\uf67b"; + public static String Paste = "\uf0ea"; + public static String Pause = "\uf04c"; + public static String PauseCircle = "\uf28b"; + public static String Paw = "\uf1b0"; + public static String Peace = "\uf67c"; + public static String Pen = "\uf304"; + public static String PenAlt = "\uf305"; + public static String PenFancy = "\uf5ac"; + public static String PenNib = "\uf5ad"; + public static String PenSquare = "\uf14b"; + public static String PencilAlt = "\uf303"; + public static String PencilRuler = "\uf5ae"; + public static String PeopleArrows = "\ue068"; + public static String PeopleCarry = "\uf4ce"; + public static String PepperHot = "\uf816"; + public static String Percent = "\uf295"; + public static String Percentage = "\uf541"; + public static String PersonBooth = "\uf756"; + public static String Phone = "\uf095"; + public static String PhoneAlt = "\uf879"; + public static String PhoneSlash = "\uf3dd"; + public static String PhoneSquare = "\uf098"; + public static String PhoneSquareAlt = "\uf87b"; + public static String PhoneVolume = "\uf2a0"; + public static String PhotoVideo = "\uf87c"; + public static String PiggyBank = "\uf4d3"; + public static String Pills = "\uf484"; + public static String PizzaSlice = "\uf818"; + public static String PlaceOfWorship = "\uf67f"; + public static String Plane = "\uf072"; + public static String PlaneArrival = "\uf5af"; + public static String PlaneDeparture = "\uf5b0"; + public static String PlaneSlash = "\ue069"; + public static String Play = "\uf04b"; + public static String PlayCircle = "\uf144"; + public static String Plug = "\uf1e6"; + public static String Plus = "\uf067"; + public static String PlusCircle = "\uf055"; + public static String PlusSquare = "\uf0fe"; + public static String Podcast = "\uf2ce"; + public static String Poll = "\uf681"; + public static String PollH = "\uf682"; + public static String Poo = "\uf2fe"; + public static String PooStorm = "\uf75a"; + public static String Poop = "\uf619"; + public static String Portrait = "\uf3e0"; + public static String PoundSign = "\uf154"; + public static String PowerOff = "\uf011"; + public static String Pray = "\uf683"; + public static String PrayingHands = "\uf684"; + public static String Prescription = "\uf5b1"; + public static String PrescriptionBottle = "\uf485"; + public static String PrescriptionBottleAlt = "\uf486"; + public static String Print = "\uf02f"; + public static String Procedures = "\uf487"; + public static String ProjectDiagram = "\uf542"; + public static String PumpMedical = "\ue06a"; + public static String PumpSoap = "\ue06b"; + public static String PuzzlePiece = "\uf12e"; + public static String Qrcode = "\uf029"; + public static String Question = "\uf128"; + public static String QuestionCircle = "\uf059"; + public static String Quidditch = "\uf458"; + public static String QuoteLeft = "\uf10d"; + public static String QuoteRight = "\uf10e"; + public static String Quran = "\uf687"; + public static String Radiation = "\uf7b9"; + public static String RadiationAlt = "\uf7ba"; + public static String Rainbow = "\uf75b"; + public static String Random = "\uf074"; + public static String Receipt = "\uf543"; + public static String RecordVinyl = "\uf8d9"; + public static String Recycle = "\uf1b8"; + public static String Redo = "\uf01e"; + public static String RedoAlt = "\uf2f9"; + public static String Registered = "\uf25d"; + public static String RemoveFormat = "\uf87d"; + public static String Reply = "\uf3e5"; + public static String ReplyAll = "\uf122"; + public static String Republican = "\uf75e"; + public static String Restroom = "\uf7bd"; + public static String Retweet = "\uf079"; + public static String Ribbon = "\uf4d6"; + public static String Ring = "\uf70b"; + public static String Road = "\uf018"; + public static String Robot = "\uf544"; + public static String Rocket = "\uf135"; + public static String Route = "\uf4d7"; + public static String Rss = "\uf09e"; + public static String RssSquare = "\uf143"; + public static String RubleSign = "\uf158"; + public static String Ruler = "\uf545"; + public static String RulerCombined = "\uf546"; + public static String RulerHorizontal = "\uf547"; + public static String RulerVertical = "\uf548"; + public static String Running = "\uf70c"; + public static String RupeeSign = "\uf156"; + public static String SadCry = "\uf5b3"; + public static String SadTear = "\uf5b4"; + public static String Satellite = "\uf7bf"; + public static String SatelliteDish = "\uf7c0"; + public static String Save = "\uf0c7"; + public static String School = "\uf549"; + public static String Screwdriver = "\uf54a"; + public static String Scroll = "\uf70e"; + public static String SdCard = "\uf7c2"; + public static String Search = "\uf002"; + public static String SearchDollar = "\uf688"; + public static String SearchLocation = "\uf689"; + public static String SearchMinus = "\uf010"; + public static String SearchPlus = "\uf00e"; + public static String Seedling = "\uf4d8"; + public static String Server = "\uf233"; + public static String Shapes = "\uf61f"; + public static String Share = "\uf064"; + public static String ShareAlt = "\uf1e0"; + public static String ShareAltSquare = "\uf1e1"; + public static String ShareSquare = "\uf14d"; + public static String ShekelSign = "\uf20b"; + public static String ShieldAlt = "\uf3ed"; + public static String ShieldVirus = "\ue06c"; + public static String Ship = "\uf21a"; + public static String ShippingFast = "\uf48b"; + public static String ShoePrints = "\uf54b"; + public static String ShoppingBag = "\uf290"; + public static String ShoppingBasket = "\uf291"; + public static String ShoppingCart = "\uf07a"; + public static String Shower = "\uf2cc"; + public static String ShuttleVan = "\uf5b6"; + public static String Sign = "\uf4d9"; + public static String SignInAlt = "\uf2f6"; + public static String SignLanguage = "\uf2a7"; + public static String SignOutAlt = "\uf2f5"; + public static String Signal = "\uf012"; + public static String Signature = "\uf5b7"; + public static String SimCard = "\uf7c4"; + public static String Sink = "\ue06d"; + public static String Sitemap = "\uf0e8"; + public static String Skating = "\uf7c5"; + public static String Skiing = "\uf7c9"; + public static String SkiingNordic = "\uf7ca"; + public static String Skull = "\uf54c"; + public static String SkullCrossbones = "\uf714"; + public static String Slash = "\uf715"; + public static String Sleigh = "\uf7cc"; + public static String SlidersH = "\uf1de"; + public static String Smile = "\uf118"; + public static String SmileBeam = "\uf5b8"; + public static String SmileWink = "\uf4da"; + public static String Smog = "\uf75f"; + public static String Smoking = "\uf48d"; + public static String SmokingBan = "\uf54d"; + public static String Sms = "\uf7cd"; + public static String Snowboarding = "\uf7ce"; + public static String Snowflake = "\uf2dc"; + public static String Snowman = "\uf7d0"; + public static String Snowplow = "\uf7d2"; + public static String Soap = "\ue06e"; + public static String Socks = "\uf696"; + public static String SolarPanel = "\uf5ba"; + public static String Sort = "\uf0dc"; + public static String SortAlphaDown = "\uf15d"; + public static String SortAlphaDownAlt = "\uf881"; + public static String SortAlphaUp = "\uf15e"; + public static String SortAlphaUpAlt = "\uf882"; + public static String SortAmountDown = "\uf160"; + public static String SortAmountDownAlt = "\uf884"; + public static String SortAmountUp = "\uf161"; + public static String SortAmountUpAlt = "\uf885"; + public static String SortDown = "\uf0dd"; + public static String SortNumericDown = "\uf162"; + public static String SortNumericDownAlt = "\uf886"; + public static String SortNumericUp = "\uf163"; + public static String SortNumericUpAlt = "\uf887"; + public static String SortUp = "\uf0de"; + public static String Spa = "\uf5bb"; + public static String SpaceShuttle = "\uf197"; + public static String SpellCheck = "\uf891"; + public static String Spider = "\uf717"; + public static String Spinner = "\uf110"; + public static String Splotch = "\uf5bc"; + public static String SprayCan = "\uf5bd"; + public static String Square = "\uf0c8"; + public static String SquareFull = "\uf45c"; + public static String SquareRootAlt = "\uf698"; + public static String Stamp = "\uf5bf"; + public static String Star = "\uf005"; + public static String StarAndCrescent = "\uf699"; + public static String StarHalf = "\uf089"; + public static String StarHalfAlt = "\uf5c0"; + public static String StarOfDavid = "\uf69a"; + public static String StarOfLife = "\uf621"; + public static String StepBackward = "\uf048"; + public static String StepForward = "\uf051"; + public static String Stethoscope = "\uf0f1"; + public static String StickyNote = "\uf249"; + public static String Stop = "\uf04d"; + public static String StopCircle = "\uf28d"; + public static String Stopwatch = "\uf2f2"; + public static String Stopwatch20 = "\ue06f"; + public static String Store = "\uf54e"; + public static String StoreAlt = "\uf54f"; + public static String StoreAltSlash = "\ue070"; + public static String StoreSlash = "\ue071"; + public static String Stream = "\uf550"; + public static String StreetView = "\uf21d"; + public static String Strikethrough = "\uf0cc"; + public static String Stroopwafel = "\uf551"; + public static String Subscript = "\uf12c"; + public static String Subway = "\uf239"; + public static String Suitcase = "\uf0f2"; + public static String SuitcaseRolling = "\uf5c1"; + public static String Sun = "\uf185"; + public static String Superscript = "\uf12b"; + public static String Surprise = "\uf5c2"; + public static String Swatchbook = "\uf5c3"; + public static String Swimmer = "\uf5c4"; + public static String SwimmingPool = "\uf5c5"; + public static String Synagogue = "\uf69b"; + public static String Sync = "\uf021"; + public static String SyncAlt = "\uf2f1"; + public static String Syringe = "\uf48e"; + public static String Table = "\uf0ce"; + public static String TableTennis = "\uf45d"; + public static String Tablet = "\uf10a"; + public static String TabletAlt = "\uf3fa"; + public static String Tablets = "\uf490"; + public static String TachometerAlt = "\uf3fd"; + public static String Tag = "\uf02b"; + public static String Tags = "\uf02c"; + public static String Tape = "\uf4db"; + public static String Tasks = "\uf0ae"; + public static String Taxi = "\uf1ba"; + public static String Teeth = "\uf62e"; + public static String TeethOpen = "\uf62f"; + public static String TemperatureHigh = "\uf769"; + public static String TemperatureLow = "\uf76b"; + public static String Tenge = "\uf7d7"; + public static String Terminal = "\uf120"; + public static String TextHeight = "\uf034"; + public static String TextWidth = "\uf035"; + public static String Th = "\uf00a"; + public static String ThLarge = "\uf009"; + public static String ThList = "\uf00b"; + public static String TheaterMasks = "\uf630"; + public static String Thermometer = "\uf491"; + public static String ThermometerEmpty = "\uf2cb"; + public static String ThermometerFull = "\uf2c7"; + public static String ThermometerHalf = "\uf2c9"; + public static String ThermometerQuarter = "\uf2ca"; + public static String ThermometerThreeQuarters = "\uf2c8"; + public static String ThumbsDown = "\uf165"; + public static String ThumbsUp = "\uf164"; + public static String Thumbtack = "\uf08d"; + public static String TicketAlt = "\uf3ff"; + public static String Times = "\uf00d"; + public static String TimesCircle = "\uf057"; + public static String Tint = "\uf043"; + public static String TintSlash = "\uf5c7"; + public static String Tired = "\uf5c8"; + public static String ToggleOff = "\uf204"; + public static String ToggleOn = "\uf205"; + public static String Toilet = "\uf7d8"; + public static String ToiletPaper = "\uf71e"; + public static String ToiletPaperSlash = "\ue072"; + public static String Toolbox = "\uf552"; + public static String Tools = "\uf7d9"; + public static String Tooth = "\uf5c9"; + public static String Torah = "\uf6a0"; + public static String ToriiGate = "\uf6a1"; + public static String Tractor = "\uf722"; + public static String Trademark = "\uf25c"; + public static String TrafficLight = "\uf637"; + public static String Trailer = "\ue041"; + public static String Train = "\uf238"; + public static String Tram = "\uf7da"; + public static String Transgender = "\uf224"; + public static String TransgenderAlt = "\uf225"; + public static String Trash = "\uf1f8"; + public static String TrashAlt = "\uf2ed"; + public static String TrashRestore = "\uf829"; + public static String TrashRestoreAlt = "\uf82a"; + public static String Tree = "\uf1bb"; + public static String Trophy = "\uf091"; + public static String Truck = "\uf0d1"; + public static String TruckLoading = "\uf4de"; + public static String TruckMonster = "\uf63b"; + public static String TruckMoving = "\uf4df"; + public static String TruckPickup = "\uf63c"; + public static String Tshirt = "\uf553"; + public static String Tty = "\uf1e4"; + public static String Tv = "\uf26c"; + public static String Umbrella = "\uf0e9"; + public static String UmbrellaBeach = "\uf5ca"; + public static String Underline = "\uf0cd"; + public static String Undo = "\uf0e2"; + public static String UndoAlt = "\uf2ea"; + public static String UniversalAccess = "\uf29a"; + public static String University = "\uf19c"; + public static String Unlink = "\uf127"; + public static String Unlock = "\uf09c"; + public static String UnlockAlt = "\uf13e"; + public static String Upload = "\uf093"; + public static String User = "\uf007"; + public static String UserAlt = "\uf406"; + public static String UserAltSlash = "\uf4fa"; + public static String UserAstronaut = "\uf4fb"; + public static String UserCheck = "\uf4fc"; + public static String UserCircle = "\uf2bd"; + public static String UserClock = "\uf4fd"; + public static String UserCog = "\uf4fe"; + public static String UserEdit = "\uf4ff"; + public static String UserFriends = "\uf500"; + public static String UserGraduate = "\uf501"; + public static String UserInjured = "\uf728"; + public static String UserLock = "\uf502"; + public static String UserMd = "\uf0f0"; + public static String UserMinus = "\uf503"; + public static String UserNinja = "\uf504"; + public static String UserNurse = "\uf82f"; + public static String UserPlus = "\uf234"; + public static String UserSecret = "\uf21b"; + public static String UserShield = "\uf505"; + public static String UserSlash = "\uf506"; + public static String UserTag = "\uf507"; + public static String UserTie = "\uf508"; + public static String UserTimes = "\uf235"; + public static String Users = "\uf0c0"; + public static String UsersCog = "\uf509"; + public static String UsersSlash = "\ue073"; + public static String UtensilSpoon = "\uf2e5"; + public static String Utensils = "\uf2e7"; + public static String VectorSquare = "\uf5cb"; + public static String Venus = "\uf221"; + public static String VenusDouble = "\uf226"; + public static String VenusMars = "\uf228"; + public static String Vest = "\ue085"; + public static String VestPatches = "\ue086"; + public static String Vial = "\uf492"; + public static String Vials = "\uf493"; + public static String Video = "\uf03d"; + public static String VideoSlash = "\uf4e2"; + public static String Vihara = "\uf6a7"; + public static String Virus = "\ue074"; + public static String VirusSlash = "\ue075"; + public static String Viruses = "\ue076"; + public static String Voicemail = "\uf897"; + public static String VolleyballBall = "\uf45f"; + public static String VolumeDown = "\uf027"; + public static String VolumeMute = "\uf6a9"; + public static String VolumeOff = "\uf026"; + public static String VolumeUp = "\uf028"; + public static String VoteYea = "\uf772"; + public static String VrCardboard = "\uf729"; + public static String Walking = "\uf554"; + public static String Wallet = "\uf555"; + public static String Warehouse = "\uf494"; + public static String Water = "\uf773"; + public static String WaveSquare = "\uf83e"; + public static String Weight = "\uf496"; + public static String WeightHanging = "\uf5cd"; + public static String Wheelchair = "\uf193"; + public static String Wifi = "\uf1eb"; + public static String Wind = "\uf72e"; + public static String WindowClose = "\uf410"; + public static String WindowMaximize = "\uf2d0"; + public static String WindowMinimize = "\uf2d1"; + public static String WindowRestore = "\uf2d2"; + public static String WineBottle = "\uf72f"; + public static String WineGlass = "\uf4e3"; + public static String WineGlassAlt = "\uf5ce"; + public static String WonSign = "\uf159"; + public static String Wrench = "\uf0ad"; + public static String XRay = "\uf497"; + public static String YenSign = "\uf157"; + public static String YinYang = "\uf6ad"; +} diff --git a/example/src/main/java/Main.java b/example/src/main/java/Main.java index 016bd4b3..374092d5 100644 --- a/example/src/main/java/Main.java +++ b/example/src/main/java/Main.java @@ -1,5 +1,4 @@ -import imgui.ImGui; -import imgui.ImGuiIO; +import imgui.*; import imgui.app.Application; import imgui.app.Configuration; import imgui.extension.imnodes.ImNodes; @@ -7,6 +6,11 @@ import imgui.flag.ImGuiInputTextFlags; import imgui.type.ImString; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; + public class Main extends Application { private final ImString str = new ImString(5); private final float[] flt = new float[1]; @@ -29,6 +33,34 @@ protected void initImGui(final Configuration config) { io.setConfigViewportsNoTaskBarIcon(true); ImNodes.createContext(); + + // Example of fonts configuration + // For more information read: https://github.com/ocornut/imgui/blob/33cdbe97b8fd233c6c12ca216e76398c2e89b0d8/docs/FONTS.md + + io.getFonts().addFontDefault(); // Add default font for latin glyphs + + // You can use the ImFontGlyphRangesBuilder helper to create glyph ranges based on text input. + // For example: for a game where your script is known, if you can feed your entire script to it (using addText) and only build the characters the game needs. + // Here we are using it just to combine all required glyphs in one place + final ImFontGlyphRangesBuilder rangesBuilder = new ImFontGlyphRangesBuilder(); // Glyphs ranges provide + rangesBuilder.addRanges(io.getFonts().getGlyphRangesDefault()); + rangesBuilder.addRanges(io.getFonts().getGlyphRangesCyrillic()); + rangesBuilder.addRanges(io.getFonts().getGlyphRangesJapanese()); + rangesBuilder.addRanges(FontAwesomeIcons._IconRange); + + // Font config for additional fonts + // This is a natively allocated struct so don't forget to call destroy after atlas is built + final ImFontConfig fontConfig = new ImFontConfig(); + fontConfig.setMergeMode(true); // Enable merge mode to merge cyrillic, japanese and icons with default font + + final short[] glyphRanges = rangesBuilder.buildRanges(); + io.getFonts().addFontFromMemoryTTF(loadFromResources("Tahoma.ttf"), 14, fontConfig, glyphRanges); // cyrillic glyphs + io.getFonts().addFontFromMemoryTTF(loadFromResources("NotoSansCJKjp-Medium.otf"), 14, fontConfig, glyphRanges); // japanese glyphs + io.getFonts().addFontFromMemoryTTF(loadFromResources("fa-regular-400.ttf"), 14, fontConfig, glyphRanges); // font awesome + io.getFonts().addFontFromMemoryTTF(loadFromResources("fa-solid-900.ttf"), 14, fontConfig, glyphRanges); // font awesome + io.getFonts().build(); + + fontConfig.destroy(); } @Override @@ -39,8 +71,8 @@ protected void disposeImGui() { @Override public void process() { - ImGui.text("Hello, World!"); - if (ImGui.button("Save")) { + ImGui.text("Hello, World! " + FontAwesomeIcons.Smile); + if (ImGui.button(FontAwesomeIcons.Save + " Save")) { count++; } ImGui.sameLine(); @@ -53,6 +85,14 @@ public void process() { Extra.show(this); } + private static byte[] loadFromResources(String name) { + try { + return Files.readAllBytes(Paths.get(Main.class.getResource(name).toURI())); + } catch (IOException | URISyntaxException e) { + throw new RuntimeException(e); + } + } + public static void main(final String[] args) { launch(new Main()); } diff --git a/example/src/main/resources/NotoSansCJKjp-Medium.otf b/example/src/main/resources/NotoSansCJKjp-Medium.otf new file mode 100644 index 00000000..9b335868 Binary files /dev/null and b/example/src/main/resources/NotoSansCJKjp-Medium.otf differ diff --git a/example/src/main/resources/Tahoma.ttf b/example/src/main/resources/Tahoma.ttf new file mode 100644 index 00000000..aad8819e Binary files /dev/null and b/example/src/main/resources/Tahoma.ttf differ diff --git a/example/src/main/resources/fa-regular-400.ttf b/example/src/main/resources/fa-regular-400.ttf new file mode 100644 index 00000000..932df4ae Binary files /dev/null and b/example/src/main/resources/fa-regular-400.ttf differ diff --git a/example/src/main/resources/fa-solid-900.ttf b/example/src/main/resources/fa-solid-900.ttf new file mode 100644 index 00000000..49133379 Binary files /dev/null and b/example/src/main/resources/fa-solid-900.ttf differ diff --git a/imgui-binding/src/main/java/imgui/ImFontGlyphRangesBuilder.java b/imgui-binding/src/main/java/imgui/ImFontGlyphRangesBuilder.java new file mode 100644 index 00000000..73acba98 --- /dev/null +++ b/imgui-binding/src/main/java/imgui/ImFontGlyphRangesBuilder.java @@ -0,0 +1,98 @@ +package imgui; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * Helper to build glyph ranges from text/string data. Feed your application strings/characters to it then call buildRanges(). + *

+ * You can use the ImFontGlyphRangesBuilder helper to create glyph ranges based on text input. For example: for a game where your script is known, + * if you can feed your entire script to it and only build the characters the game needs. + *

+ * Direct reimplementation of native ImFontGlyphRangesBuilder in java + */ +public final class ImFontGlyphRangesBuilder { + + private static final int UNICODE_CODEPOINT_MAX = 0xFFFF; + + // have to use type long because values are unsigned integers + private final long[] usedChars = new long[(UNICODE_CODEPOINT_MAX + 1) / 8]; + + public ImFontGlyphRangesBuilder() { + clear(); + } + + /** + * Adds single character to resulting ranges + */ + public void addChar(final char c) { + setBit(c); + } + + /** + * Adds all characters from the given string to resulting ranges + */ + public void addText(final String text) { + for (int i = 0; i < text.length(); i++) { + addChar(text.charAt(i)); + } + } + + /** + * Copies all given ranges to resulting ranges + */ + public void addRanges(final short[] ranges) { + for (int i = 0; i < ranges.length; i += 2) { + if (ranges[i] == 0) { + break; + } + + for (int k = ranges[i]; k <= ranges[i + 1]; k++) { + addChar((char) k); + } + } + } + + /** + * Builds the final result (ordered ranges with all the unique characters submitted) + * Result of this function can be directly passed to ImFontAtlas + */ + public short[] buildRanges() { + final List out = new ArrayList<>(); + for (int n = 0; n <= UNICODE_CODEPOINT_MAX; n++) { + if (getBit(n)) { + out.add((short) n); + while (n < UNICODE_CODEPOINT_MAX && getBit(n + 1)) { + n++; + } + out.add((short) n); + } + } + + final short[] result = new short[out.size() + 1]; + for (int i = 0; i < out.size(); i++) { + result[i] = out.get(i); + } + result[result.length - 1] = 0; + return result; + } + + public void clear() { + Arrays.fill(usedChars, 0L); + } + + public void setBit(final int n) { + final int off = n >> 5; + final long mask = 1L << (n & 31L); + usedChars[off] |= mask; + } + + public boolean getBit(final int n) { + final int off = n >> 5; + final long mask = 1L << (n & 31L); + return (usedChars[off] & mask) > 0; + } + + +}