{"id":6197,"date":"2020-11-17T14:05:23","date_gmt":"2020-11-17T12:05:23","guid":{"rendered":"http:\/\/www.kameli.net\/marq\/?p=6197"},"modified":"2020-11-17T14:06:26","modified_gmt":"2020-11-17T12:06:26","slug":"processing-2-processing-3","status":"publish","type":"post","link":"http:\/\/www.kameli.net\/marq\/?p=6197","title":{"rendered":"Processing 2 -> Processing 3"},"content":{"rendered":"\n<p>Pitk\u00e4n j\u00e4hn\u00e4ilyn j\u00e4lkeen p\u00e4\u00e4tin lopulta yritt\u00e4\u00e4 <a href=\"http:\/\/www.kameli.net\/marq\/?page_id=2717\">PETSCII-editorini<\/a> p\u00e4ivitt\u00e4mist\u00e4 Processing 2:sta Processing 3:lla toimivaksi. Yht\u00e4\u00e4lt\u00e4 P2 alkaa olla jo ammoinen versio, eik\u00e4 sill\u00e4 tehtyjen softien toimivuus nykykoneilla ole en\u00e4\u00e4 taattua, ja toisaalta <a href=\"http:\/\/www.kameli.net\/~marq\/kode\/petscii-beta.zip\">sorsaversiosta<\/a> kiinnostuneille on melkoista riesaa roikottaa koneella vanhentunutta ohjelmaa vain t\u00e4m\u00e4n takia. En mitenk\u00e4\u00e4n erityisemmin itse rakasta P3:a, sill\u00e4 se ei ole joka suhteessa parannus aiempiin, mutta mink\u00e4s teet.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><a href=\"http:\/\/www.kameli.net\/marq\/wp-content\/uploads\/2020\/11\/leveet-tabit.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.kameli.net\/marq\/wp-content\/uploads\/2020\/11\/leveet-tabit-1024x26.png\" alt=\"\" class=\"wp-image-6198\" width=\"512\" height=\"13\" srcset=\"http:\/\/www.kameli.net\/marq\/wp-content\/uploads\/2020\/11\/leveet-tabit-1024x26.png 1024w, http:\/\/www.kameli.net\/marq\/wp-content\/uploads\/2020\/11\/leveet-tabit-300x8.png 300w, http:\/\/www.kameli.net\/marq\/wp-content\/uploads\/2020\/11\/leveet-tabit-768x20.png 768w, http:\/\/www.kameli.net\/marq\/wp-content\/uploads\/2020\/11\/leveet-tabit.png 1405w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/a><figcaption>Processing 3 \u2013 haaskataanpa tilaa oikein kunnolla n\u00e4ihin tabien v\u00e4leihin \ud83d\ude41<\/figcaption><\/figure><\/div>\n\n\n\n<p>Parin illan pakerruksen j\u00e4lkeen uskoisin saaneeni jo suunnilleen kaiken toimimaan tyydytt\u00e4v\u00e4sti. Osa korjauksista oli triviaaleja, kuten ikkunan koon asetuksen vaihtaminen <em>settings()<\/em>-funktioon ja <em>args<\/em>:n kohdalla lis\u00e4tarkistus, ettei taulukko ole <em>null<\/em> \u2013\u00a0P2:ssa taulukko on tyhj\u00e4, jos komentorivill\u00e4 ei ole annettu parametreja. Ikkunan otsikko vaihdetaan nyky\u00e4\u00e4n <em>surface.setTitle()<\/em>-funktiolla aiemman <em>framen<\/em> sijasta.<\/p>\n\n\n\n<p>Mutkikkaat asiat ovat kuitenkin mutkikkaita, ja etenkin esikatseluikkunan kanssa taistellessa oli usko loppua. Vanha (sekin huono) tapa avata toinen ikkuna ei en\u00e4\u00e4 toiminut alkuunkaan, mutta toisaalta esimerkeist\u00e4 l\u00f6ytyy nyky\u00e4\u00e4n ihan semivirallinenkin keino kahden ikkunan k\u00e4ytt\u00f6\u00f6n. Ongelmat alkavat siin\u00e4 vaiheessa, kun toinen ikkuna pit\u00e4isi pysty\u00e4 sulkemaan ilman, ett\u00e4 koko ohjelman suoritus loppuu. P\u00e4\u00e4dyin siihen, ett\u00e4 toista ikkunaa ei kannata edes yritt\u00e4\u00e4 sulkea, vaan se on parempi piilottaa, kun sen halutaan olevan &#8220;kiinni&#8221;. Lopulta esikatseluikkunan koodista tuli selke\u00e4mpi ja siistimpi kuin vanhasta, joten ainakin t\u00e4m\u00e4 muutos oli parannus.<\/p>\n\n\n\n<p>Toinen suuri kompastuskivi oli vasemman ja oikean shift-n\u00e4pp\u00e4imen toisistaan erottelu, joka oli jo ennenkin hankalaa ja vaati <em>keyPressed(KeyEvent ke)<\/em>-purkkaamista. Nyt vanha konsti ei toiminut en\u00e4\u00e4 ollenkaan, mutta onneksi <em>keyEvent<\/em>-oliosta saa edelleen kaivettua AWT:n eventin, jonka alta l\u00f6ytyy tuttu <em>KeyEvent.KEY_LOCATION_LEFT<\/em>. T\u00e4m\u00e4kin tapa on jo menossa kiellettyjen listalle, mutta ainakin toistaiseksi se viel\u00e4 toimii. Olisi tietysti yksinkertaisinta, jos Processing vain suoraan tukisi shiftien erottelua, mutta se lienee turha toivo.<\/p>\n\n\n\n<p>Oikeasti merkitt\u00e4v\u00e4 parannus olisi, jos saisin h\u00f6sk\u00e4n toimimaan 2D-kiihdytettyn\u00e4, mutta t\u00e4ll\u00e4 hetkell\u00e4 piirtokoodi on niin tiukasti sidottu pikselien suoraan sorkkimiseen, ett\u00e4 se ei ole kohtuudella mahdollista. Vaihdoin kokeeksi grafiikkaengineksi P2D:n, mutta se oli l\u00e4hinn\u00e4 ruma ja l\u00e4ginen (t\u00e4m\u00e4 on toki kiinni l\u00e4hinn\u00e4 omasta piirtokoodistani), joten olkoon toistaiseksi. Linuxilla ja Windowsilla kiihdytt\u00e4m\u00e4t\u00f6nkin ikkuna on aivan tarpeeksi nopea, mutta M\u00e4kill\u00e4 meno on hieman hyhm\u00e4ist\u00e4 nykyisill\u00e4 Javan versioilla, joissa ei ole en\u00e4\u00e4 Applen optimointeja mukana.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pitk\u00e4n j\u00e4hn\u00e4ilyn j\u00e4lkeen p\u00e4\u00e4tin lopulta yritt\u00e4\u00e4 PETSCII-editorini p\u00e4ivitt\u00e4mist\u00e4 Processing 2:sta Processing 3:lla toimivaksi. Yht\u00e4\u00e4lt\u00e4 P2 alkaa olla jo ammoinen versio, eik\u00e4 sill\u00e4 tehtyjen softien toimivuus nykykoneilla ole en\u00e4\u00e4 taattua, ja toisaalta sorsaversiosta kiinnostuneille on melkoista riesaa roikottaa koneella vanhentunutta ohjelmaa vain t\u00e4m\u00e4n takia. En mitenk\u00e4\u00e4n erityisemmin itse rakasta P3:a, sill\u00e4 se ei ole joka suhteessa [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18,25,15,24],"tags":[],"class_list":["post-6197","post","type-post","status-publish","format-standard","hentry","category-demoskene","category-koodi","category-retro","category-softat"],"_links":{"self":[{"href":"http:\/\/www.kameli.net\/marq\/index.php?rest_route=\/wp\/v2\/posts\/6197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.kameli.net\/marq\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.kameli.net\/marq\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.kameli.net\/marq\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.kameli.net\/marq\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6197"}],"version-history":[{"count":3,"href":"http:\/\/www.kameli.net\/marq\/index.php?rest_route=\/wp\/v2\/posts\/6197\/revisions"}],"predecessor-version":[{"id":6201,"href":"http:\/\/www.kameli.net\/marq\/index.php?rest_route=\/wp\/v2\/posts\/6197\/revisions\/6201"}],"wp:attachment":[{"href":"http:\/\/www.kameli.net\/marq\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.kameli.net\/marq\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6197"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.kameli.net\/marq\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}