DOC PREVIEW
Columbia COMS W4115 - TMIL Text ManIpulation Language

This preview shows page 1-2-3 out of 10 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 10 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 10 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 10 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 10 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Programming Languages and Translators Fall 2007Eli Hamburger ([email protected])Michele Merler ([email protected])Jimmy Wei ([email protected])Lin Yang ([email protected])TMIL Text ManIpulation Language•Generate CAPTCHAs(image based RTT)•Manipulate text on multiple images to create animations•Create easily adaptable templates (for web site designers)•Simple, easy to use, c++ like programming language that allows iterative operations text and imagesMotivationTMIL Features•Manipulate color, size, rotation, font of a text•Write text on an image•Draw lines on an image•Open and save images•Build text or lines animations on sequences of imagesLexical Conventions•Basic types (C/C++ like): bool, char, float, int, string•Built-in types: –color (r,g,b)–coordinate (x,y) –image (h,w) –text (name, font, colour, position, size, rotation)•Built-in functions: –open(image, name)–create(image,h,w,bgcolor)–save(image,name)–drawline(image, pos1, pos2, color, width)–int2string, float2string, string2float, string2int, char_at•Operators: () [] + - * / % ++ -- == != > < >= <= && || ! . ,•Special operator: <~ image <~ text : stamps text on imageTMIL Program Sampleint main(){image im;open(im,"Dock.jpg"); // loads image from filetext t; t.name = "dog"; t.font = "Arial.ttf"; t.size = 60;coordinate coor[3]; /* array definition */color c; c.r = c.g = c.b = 50; t.colour = c; for (int i=0; i<=2; i++) {• coor[i].x = i*150; coor[i].y = 200; t.rotation = i*40; t.position = coor[i]; if(i==1) t.font = "Times.ttf";im <~ t; }drawline(im, coor[0], coor[2], c, 5); save(im, "test5.png"); // save image into a filereturn 0;}//int main() {image im;open(im,"Dock.jpg"); loads image from filetext t; t.name = "dog"; t.font = "Arial.ttf"; t.size = 60;coordinate coor[3]; array definition color c; c.r = c.r = c.b = 50; t.colour = c; for (int i=0; i<=2; i++) {• coor[i].x = i*150; coor[i].y = 200; t.rotation = i*40; t.position = coor[i]; if (i==1) t.font = "Times.ttf";im <~ t; }drawline(im, coor[0], coor[2], c, 5); save(im, "test5.png"); // save image into a filereturn 0;}TMIL Program SampleC/C++ comments stylemultiple assignmentscontrol flow statements Stamp operator Built-in functions Built-in type property access main() function required/* */Array accessAnother TMIL Samplevoid circular_draw(image im, text w) { text w1 = w; string name; for(int j = 0; j<15; j++) {name = "./turtle/turtle" + int2string(j+1) + ".jpg"; w1.colour.b -= 30;w1.colour.g -= 10;w1.rotation = - j*(360/15);im <~ w1;save(im,name); }} int main() { image im; open(im, "turtle.jpg"); text w1; w1.name = "turtle"; w1.font = "GOTHIC.ttf"; w1.rotation = 0; w1.size = 80; w1.position.x = im.w/2; w1.position.y = im.h/2; w1.colour.r = w1.colour.g = w1.colour.b = 255; circular_draw(im,w1); return 0;}User defined functionTMIL Compiler ArchitectureInput: TMIL codeTree WalkerSyntax AnalysisSemantic AnalysisLEXER/PARSEROutput: executableG++GDFreeTypeASTC++ Codetmil.hCode GenerationTesting •Lexer Tests •Parser Tests•Walker/Semantic Analysis Tests•Final Programs (more complex and actually do something)Lessons Learned & Conclusions•Start early•Good communication•Pros of teamwork•Modifying grammar•There will always be more corner cases to test•Writing your own compiler is


View Full Document

Columbia COMS W4115 - TMIL Text ManIpulation Language

Documents in this Course
YOLT

YOLT

13 pages

Lattakia

Lattakia

15 pages

EasyQL

EasyQL

14 pages

Photogram

Photogram

163 pages

Espresso

Espresso

27 pages

NumLang

NumLang

6 pages

EMPATH

EMPATH

14 pages

La Mesa

La Mesa

9 pages

JTemplate

JTemplate

238 pages

MATVEC

MATVEC

4 pages

TONEDEF

TONEDEF

14 pages

SASSi

SASSi

16 pages

JTemplate

JTemplate

39 pages

BATS

BATS

10 pages

Synapse

Synapse

11 pages

c.def

c.def

116 pages

TweaXML

TweaXML

108 pages

Load more
Download TMIL Text ManIpulation Language
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view TMIL Text ManIpulation Language and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view TMIL Text ManIpulation Language 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?