Info Draft Processing suomeksi

Tulostaminen


Tähän asti olemme työskennelleet ruudulla luoden kuvia ja animaatioita. Nyt keskustelemme tulostamisesta: teemme PDF-tiedoston, jonka tulostamme paperille. 

Suora tila

Tässä esimerkissä luomme 500 satunnaista ympyrää ja piirrämme ne PDF-dokumenttiin, joka tallennetaan työkansioomme. 

01_PDF_1

import processing.pdf.*;
size(400, 400, PDF, "Pallot.pdf");
for (int i = 0; i < 500; i++)
   ellipse(random(width),random(height), 50, 50);
exit();

Tässä esimerkissä aloitamme tuomalla kaikki luokat kirjastosta processing.pdf. Käytämme metodia size (), joka ottaa neljä parametriä. Huomaat varmaan tässä avainsanan, joka kertoo Processingille, että piirrämme dokumentin "Pallot.pdf", joka on metodin neljäs parametri.

Tällä metodilla emme tarvitse ikkunoita, koska voimme piirtää suoraan dokumenttiin emmekä ruudulle. Tämä ohjelma päättyy komennolla exit(), joka käskee Processingin lopettaa ohjelma itsekseen, kunhan olemme painaneet käyttöliittymän Stop-nappia.

Luotu dokumentti on ohjelmasi hakemistossa. Voit avata sen kaksoisnapsauttamalla. 

02_PDF_Fichier_export_1

Nauhoitustila

Voimme nyt nähdä, kuinka voit piirtää sekä ruudulle että tiedostoon. PDF-tiedostoon piirretään komennoilla beginRecord() ja endRecord(). Molemmat menetelmät antavat meidän aloittaa ja lopettaa grafiikkakomentojen piirtäminen PDF-tiedostoon.

Kuten aiemminkin, tuloksena oleva tiedosto on tallennettu ohjelman kansioon.

Seuraavassa esimerkissä luomme graafisen työkalun, jonka siveltimen koko riippuu hiiren nopeudesta. Ohjelman käynnistyessä metodi setup() aloittaa nauhoittamisen komennosta beginRecord(), joka ottaa ensimmäisenä parametrinä viennin tyypin ja tiedostonimen toisena parametrinä. Kun painat VÄLILYÖNTIÄ, nauhoitus loppuu ja ohjelma pysähtyy. Kuten aiemminkin, tiedosto tallennetaan ohjelman kansioon.

import processing.pdf.*;
boolean drag = false;

void setup()
{
  size(400, 400);
  smooth();
  beginRecord(PDF, "Pallot.pdf");
}

void draw() {
  if (drag)
  {
    float r = dist(pmouseX, pmouseY, mouseX, mouseY) + 5;
    ellipse(mouseX, mouseY, r, r);
  }
}

void mouseDragged() {
  drag = true;
}

void mouseReleased() {
  drag = false;
}

void keyPressed() {
    endRecord();
    exit();
}

Seuraava rivi: 

float r = dist(pmouseX, pmouseY, mouseX, mouseY) + 5;

... voi laskea hiiren nopeuden käyttäen metodia dist ja muuttujia pmouseX, mouseX, mouseY ja pmouseY. Voimme lisätä 5, jotta meillä ei ole läpimitan 0 ympyröitä ruudulla.

Voimme käyttää muuttujaa drag ja piirtää käyttäjän tekemät ympyrät komennolla draw(). 

Kirjageneraattori

Sen sijaan että loisimme yhden dokumentin, luomme monisivuisen kirjan. Luomme dynaamisesti käännettävät sivut (http://fr.wikipedia.org/wiki/Folioscope).  Jokainen sivu näyttää kuvan animaation. Me käytämme metodia nextPage(), joka luo tyhjän sivun joka kerta kun metodia kutsutaan nauhoituksen aikana.  

04_PDF_Folioscope_2

import processing.pdf.*;

PGraphicsPDF pdf;
float x = 0;
float y = 75;

void setup() {
  size(400, 150);
  smooth();
  pdf = (PGraphicsPDF) beginRecord(PDF, "Luoti.pdf");
}

void draw() {
  background(255);
  fill(0);
  ellipse(x, y, 30, 30);

  x = x + random(5);
  y = y + random(-5, 5);

  if (x - 30 > width) {
    endRecord();
    exit();
  }
  pdf.nextPage();
}

Olemme esitelleet muuttujan, joka varastoi pdf-dokumentin, jonka luomme. Kun olemme lopettaneet kuvan piirtämisen draw() -komennolla, siirrymme seuraavaan kuvaan metodilla pdf.nextPage(). Ohjelma pysäytetään ja voimme avata hakemistosta tiedoston Luoti.pdf. 

Pikseli vastaan vektori

Kun piirrämme esimerkiksi neliön ruudulle, täytämme ruudun alueen pikselit tietyllä värillä. Jos tallennamme kuvan, voimme tallentaa jokaisen yksittäisen pikselin tietyssä kuvaformaatissa (JPEG, GIF, TIFF, jne.). Jos tahdomme laajentaa kuvan, tietokone ei kykene luomaan uusia pikseleitä vanhojen pikselien väliin ja lisäämään yksityiskohtia, koska se ei tallenna tätä tietoa tiedostoon.

Jos tallennamme saman kuvan vektoriformaatissa, Processing ei enää tallenna jokaista pikseliä erikseen, vaan pikemminkin jokaisen piirretyn muodon ominaisuudet: sen muodon, sijainnin ja värin. Joten kun laajennamme kuvaa, tietokone piirtää tarkasti kuvan ominaisuudet, joita ei olisi voitu laajentaa pikselöidystä kuvasta.

Tuo PDF-ominaisuudet

Edellisessä esimerkissä käytimme kirjastoa processing.pdf .*, joka voi tuoda PDF-dokumentin luomiseen tarkoitetun kirjaston. Kirjasto on joukko ominaisuuksia, jotka laajentavat Processingin mahdollisuuksia aina käyttäessämme PDF-tiedostoja ohjelmassamme, jolloin käytämme Import-komentoa. 

 

01_PDF_import_statement

Jos yrität joskus käyttää PDF-viennin ominaisuuksia tuomatta kirjastoa, törmäät virheilmoituksiin, jotka ilmestyvät konsoliohjelmaan. Koodin kirjoittamisen lisäksi voit myös käyttää valikkoa Sketch > Import Library > PDF Export