{"id":18354605,"url":"https://github.com/mrfearless/drawtextext","last_synced_at":"2025-07-29T12:09:53.768Z","repository":{"id":129303982,"uuid":"146108489","full_name":"mrfearless/DrawTextEXT","owner":"mrfearless","description":"Extended DrawText function with html and bbcode support","archived":false,"fork":false,"pushed_at":"2018-08-31T16:48:08.000Z","size":3265,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-06T12:37:04.589Z","etag":null,"topics":["assembly-language","drawtext","gdi","masm","masm32","radasm","win32api","x86"],"latest_commit_sha":null,"homepage":null,"language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrfearless.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-25T15:50:58.000Z","updated_at":"2021-10-20T10:24:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"ba54c496-ba66-4687-b607-a6d5122fa1bc","html_url":"https://github.com/mrfearless/DrawTextEXT","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mrfearless/DrawTextEXT","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrfearless%2FDrawTextEXT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrfearless%2FDrawTextEXT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrfearless%2FDrawTextEXT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrfearless%2FDrawTextEXT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrfearless","download_url":"https://codeload.github.com/mrfearless/DrawTextEXT/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrfearless%2FDrawTextEXT/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267684911,"owners_count":24127702,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assembly-language","drawtext","gdi","masm","masm32","radasm","win32api","x86"],"created_at":"2024-11-05T22:04:39.102Z","updated_at":"2025-07-29T12:09:53.717Z","avatar_url":"https://github.com/mrfearless.png","language":"Assembly","funding_links":["https://www.buymeacoffee.com/mrfearless"],"categories":[],"sub_categories":[],"readme":"# DrawTextEXT\r\nExtended DrawText function with html and bbcode support\r\n\r\nAdapted from DrawHTML code posted by Ukkie9:  https://www.codeproject.com/Articles/7936/DrawHTML\r\n\r\n[![](https://img.shields.io/badge/Assembler-MASM%206.14.8444-brightgreen.svg?style=flat-square\u0026logo=visual-studio-code\u0026logoColor=white\u0026colorB=C9931E)](http://www.masm32.com/download.htm) [![](https://img.shields.io/badge/RadASM%20-v2.2.2.x%20-red.svg?style=flat-square\u0026colorB=C94C1E\u0026logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAYAAAASYli2AAACcklEQVR42tWVXWiPURzHz/FyQZOiVuatuFEoKzfKSCs35EJeCqFcEEa5s2heNrXiApuXFDYveUlKSywlIRfczM0WjZvJlGKTRLb5fHvOU6fT+T/PY3bj1Kff8z8vn+f8znPO+dshihnBYv8L4awRcl2FRTarBy8bQzgEjdbabzl9nxCW2IwOFYTrsBTKEH7PET4lLLYlGpcTrkC5qxqL8HeO8CVhoQ0qRxMOw34Y5TVVIPyYI+whTLVehZ9iWgZAL1mN8G6GbArhA/TZEilqKx2HCbADXkAV0oESwhOEfdChbXOUh1ovxS+wlcH3aNvC82VX3wx7Qyl9NhEugXZEU7ixX8E6Br13nTVDPU927R3QCl0wTX2h2rUNQqUv/ATLkHUGM1hLuBF8pFipZ+zBcIZKpw1O0vjYk24mnIXxEZHGNMIBxgxJ2M2P2PF7DafhGh1/0G8Gzzv1cWASfIZn0EJ7VzpIQqWyUguulFUXiDXwApxhYE9O2ibc2PMJNbAxkp5Oyh3NGvHzQkJPrK/aANtLjNNuOAU3kf/KFTrpGsJtaIdxbu3C0gvn4Dzi3qLCI3Su4/cCnnfDBvcCv/yEW0a7o6gwWI5tJvniMwutYZbQa9elsUqzgun/JKStjKAzvAvmDXuG1M1xqerkTAyG6Cy3FREeM8k2kag6MomvcBGaefG7LOF6k1wK6SUbFl0iOpqt/v+NjYjmEva4NQpPi9K6b5JN/UiXQTg+vbF1nlc4USytPpNcok1Iuk1G0eWgS0Hnd3akXbeIbuqWvP9lXxhOW2k9cOvzMJZWUWG/Sf4/lNbbv5GEwjeSSIaof7iitPwBoSgbVud1Jo0AAAAASUVORK5CYII=)](http://www.softpedia.com/get/Programming/File-Editors/RadASM.shtml) ![](https://img.shields.io/badge/Win32%20API-GDI-blue.svg?style=flat-square\u0026logo=windows\u0026logoColor=white) ![](https://img.shields.io/badge/Architecture-x86-lightgrey.svg?style=flat-square\u0026logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAC1UlEQVR42u3WA9AjWRSA0bu2bdu2bdssrm3btm3btm3bmX+Ms7rLTiW9NUmvcsL7XuELu6Ojoz5DWcc5nvKp2kBdPvesi21m1Pgr7OxjrfWtgw0VZZjKM9rjXfNHM+bWWzutGo2YSH/tNm+jgNe1XzdDR322V41Tox5D6K4qY0WRtVRnjyhysercH0VeVJ13o8hXqvNNFOlSna4oUlOd2r8moBPwoQfd6THfoLweauqp6aJ8wInmMmjujWAFtwMeNJup5cXsVnWYDyDtajQjmMp7QOoypxGMbMtyAe+Ztf5/JTaJAkM6mjRXrj0KpE9zdZIyAV8bLX5lBIPlszXAVlGXMwAr5fwskL4wdPzAfGUC5o9kJy+o+dCVloiwJNg2907wimddZrqcB9GtNQF3RXI+kI5yCcgADwF6yvfLNa0JWD7n5dWXAa4lbZwrR7UioKdhc76vdEB+KxzbioAncxpGr9IBM+XKDa0IuCanaWkS8BzguEhqrQg4P6e5mgasbV+7WCySvWlFwIU5zdYooMhytCbghpzGLh9gAodCWjFXXwDSV4aJH5inWcBLkbzTOMBa9rWvk92jH5BWqBvwjSHKBfQ3as4HlvoSFq2b+zcB6bXIj6pZABvnPKzPgPSJlxV/hkUH5v7SUPiv2LN5wKuRjO82wDdON6xFSwW8XvhdcGYkrzUPYJf4lcktZh4jxg8sViqA9SKZxDo2NH0km1ImgE2jDjuBLXK6FPX1N1fUYQnKBnCeGeN3jGdPfUC+P27TyO7GjN8xoUMpHZCecKZ97etE9+hD6vKQOz1jgMa6u90J+VO9V//OaXnzgE5Al+p0iyLfqM63UeRV1Xk/ilylOo9Gkc1U55AoMrz+qjJJ1OMQ1bgq6jOYr1Rh9EgFZtd+q0QjVtFeW0UzFvGJ9uhhrSjDSE7UX6tdaMIoz0R2cbvXfKE2UJevvOEe+5kuOjr+qb4H0/HV/SQ0YjEAAAAASUVORK5CYII=) [![](https://img.shields.io/badge/Buy%20Me-A%20Coffee-orange.svg?style=flat-square\u0026colorB=F19B55\u0026logo=data:image/png;base64,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)](https://www.buymeacoffee.com/mrfearless)\r\n\r\n## Setup DrawTextEXT\r\n\r\n* Download the latest version of the DrawTextEXT release and extract the files. The latest release can be found in the [releases](https://github.com/mrfearless/DrawTextEXT/tree/master/releases) folder, or can be downloaded directly from [here](https://github.com/mrfearless/DrawTextEXT/blob/master/releases/DrawTextEXT.zip?raw=true).\r\n* Copy the `DrawTextEXT.inc` file to your project's folder\r\n* Copy the `DrawTextEXT.asm` file to your project's folder\r\n* Add the following to your project: `include DrawTextEXT.asm`\r\n* Call the `DrawHTMLCODE` or `DrawBBCODE` function in your code, preferably in a control's `WM_PAINT` event.\r\n\r\n\r\n## DrawTextEXT Supported Tags\r\n\r\n**DrawHTMLCODE:**\r\n\r\nThe `DrawHTMLCODE` function supports the following html tags, enclosed in angle brackets `\u003c\u003e` for starting tags and `\u003c/\u003e` for ending tags:\r\n\r\n* `\u003cb\u003e \u003c/b\u003e`, `\u003cstrong\u003e \u003c/strong\u003e` for bolding text \r\n* `\u003ci\u003e \u003c/i\u003e`, `\u003cem\u003e \u003c/em\u003e` for italic text\r\n* `\u003cu\u003e \u003c/u\u003e` for underlined text\r\n* `\u003csub\u003e \u003c/sub\u003e` for subscript\r\n* `\u003csup\u003e \u003c/sup\u003e` for superscript\r\n* `\u003cpre\u003e \u003c/pre\u003e`, `\u003ccode\u003e \u003c/code\u003e` for preformatted text\r\n* `\u003cbr\u003e` for line breaks\r\n* `\u003cp\u003e` for paragraph breaks\r\n* `\u003cfont color='#RRGGBB'\u003e \u003c/font\u003e` for color of text using a hex string\r\n* `\u003ccolor='#RRGGBB'\u003e \u003c/color\u003e` for color of text using a hex string\r\n* `\u003cq\u003e \u003c/q\u003e`, `\u003cquote\u003e \u003c/quote\u003e`, `\u003cblockq\u003e \u003c/blockq\u003e` for block quotes\r\n* `\u003cul\u003e \u003c/ul\u003e` for unordered lists with bullets\r\n* `\u003col\u003e \u003c/ol\u003e` for ordered lists with numbers\r\n* `\u003cli\u003e \u003c/li\u003e` for list items within a list\r\n* `\u003chr\u003e \u003c/hr\u003e` for horizontal rule\r\n* `\u003ca href='url'\u003etitle\u003c/a\u003e` for hyperlinks having a url and title\r\n\r\n**Note:** Strings that include byte sequences of `13,10` (`0D,0Ah`) known as CRLF or `10` (`0Ah`) known as LF, **ARE IGNORED**. Use the `\u003cbr\u003e` or `\u003cp\u003e` if you wish to break to a new line.\r\n\r\n`\u003ca\u003e` tag supports internal ids if prefixed with a `#`, for example: \r\n\r\n```\r\nClick on this \u003ca href=\"#1010\"\u003elink\u003c/a\u003e to show a message box\r\n```\r\n\r\nThe url title text is shown as 'link' and the id as `#1010`. When the url is  clicked, the id will be converted to an integer (`1010`) and send to the parent window via the `WM_COMMAND` message with the id integer stored in the high word of `wParam` \r\n\r\n\r\n\r\n**DrawBBCODE:**\r\n\r\nThe `DrawBBCODE` function supports the following bbcode tags, enclosed in square brackets `[]` for starting tags and `[/]` for ending tags:\r\n\r\n* `[b] [/b]`, `\u003cstrong\u003e \u003c/strong\u003e` for bolding text \r\n* `[i] [/i]` for italic text\r\n* `[u] [/u]` for underlined text\r\n* `[code] [/code]` for preformatted text\r\n* `[color=#RRGGBB] [/color]` for color of text using a hex string\r\n* `[q] [/q]`,` [quote] [/quote]` for block quotes `*`\r\n* `[ul] [/ul]` for unordered lists with bullets\r\n* `[ol] [/ol]` for ordered lists with numbers\r\n* `[li] [/li]` or `[*]` for list items within a list\r\n* `[url] [/url]` for hyperlinks having a url and title\r\n\r\n`*`Experimental/Not Complete\r\n\r\n**Note:** There is no bbcode for line breaks or paragraph. Strings that include byte sequences of `13,10` (`0D,0Ah`) known as CRLF or `10` (`0Ah`) known as LF, are automatically processed to break to a new line.\r\n\r\n`[url]` tag supports internal ids if prefixed with a `#`, for example: \r\n\r\n```\r\nClick on this [url=#1010]link[/url] to show a message box\r\n```\r\nThe url title text is shown as 'link' and the id as `#1010`. When the url is clicked, the id will be converted to an integer (`1010`) and send to the parent window via the `WM_COMMAND` message with the id integer stored in the high word of `wParam` \r\n\r\n\r\n\r\n## DrawTextEXT Demo\r\n\r\nA RadASM example project is included to demonstrate the `DrawHTMLCODE` function. It can be found in the [releases](https://github.com/mrfearless/DrawTextEXT/tree/master/releases) folder, or can be downloaded directly from [here](https://github.com/mrfearless/DrawTextEXT/blob/master/releases/DrawHTMLTest.zip?raw=true).\r\n\r\n![](./assets/DrawHTMLCODETest.png)\r\n\r\n## Additional Resources\r\n\r\n* [RadASM IDE](http://www.softpedia.com/get/Programming/File-Editors/RadASM.shtml)\r\n* [Masm32](http://www.masm32.com/download.htm)\r\n* [UASM](http://www.terraspace.co.uk/uasm.html)\r\n\r\nIf you like this project and would like to support me, consider buying me a coffee: [buymeacoffee.com/mrfearless](https://www.buymeacoffee.com/mrfearless)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrfearless%2Fdrawtextext","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrfearless%2Fdrawtextext","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrfearless%2Fdrawtextext/lists"}