diff options
| author | Eugen Wissner <belka@caraus.de> | 2025-12-15 00:36:33 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2025-12-15 00:36:33 +0100 |
| commit | 2878f1e34c2c2e19d5b7f6fd368dbf9ec0c6277f (patch) | |
| tree | 3964cbb7e85992f8f44840d5edacafadf805ba0f /Занимательное программирование/2/5_change_pic/core | |
| parent | c1147629f7aae2ee90ccd7c9f1ccbf106361d486 (diff) | |
| download | book-exercises-2878f1e34c2c2e19d5b7f6fd368dbf9ec0c6277f.tar.gz | |
Добавил вторую главу занимательного программирования
Diffstat (limited to 'Занимательное программирование/2/5_change_pic/core')
| -rw-r--r-- | Занимательное программирование/2/5_change_pic/core/build.gradle | 5 | ||||
| -rw-r--r-- | Занимательное программирование/2/5_change_pic/core/src/net/caraus/fadein/FadeIn.java | 92 |
2 files changed, 97 insertions, 0 deletions
diff --git a/Занимательное программирование/2/5_change_pic/core/build.gradle b/Занимательное программирование/2/5_change_pic/core/build.gradle new file mode 100644 index 0000000..c2fa637 --- /dev/null +++ b/Занимательное программирование/2/5_change_pic/core/build.gradle @@ -0,0 +1,5 @@ +[compileJava, compileTestJava]*.options*.encoding = 'UTF-8' + +sourceSets.main.java.srcDirs = [ "src/" ] + +eclipse.project.name = appName + "-core" diff --git a/Занимательное программирование/2/5_change_pic/core/src/net/caraus/fadein/FadeIn.java b/Занимательное программирование/2/5_change_pic/core/src/net/caraus/fadein/FadeIn.java new file mode 100644 index 0000000..34b5bf4 --- /dev/null +++ b/Занимательное программирование/2/5_change_pic/core/src/net/caraus/fadein/FadeIn.java @@ -0,0 +1,92 @@ +package net.caraus.fadein; + +import com.badlogic.gdx.ApplicationAdapter; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.graphics.Pixmap; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.utils.ScreenUtils; + +public class FadeIn extends ApplicationAdapter { + SpriteBatch batch; + + Texture etalonTexture; + Pixmap etalon; + + Pixmap pixmap; + Texture img; + int[][][] buffer; + + @Override + public void create () { + batch = new SpriteBatch(); + + FileHandle etalonHandle = Gdx.files.internal("badlogic.bmp"); + etalon = new Pixmap(etalonHandle); + etalonTexture = new Texture(etalon); + + FileHandle imgHandle = Gdx.files.internal("background2.bmp"); + pixmap = new Pixmap(imgHandle); + buffer = new int[pixmap.getWidth()][pixmap.getHeight()][3]; + for (int i = 0; i < pixmap.getWidth(); ++i) { + for (int j = 0; j < pixmap.getHeight(); ++j) { + int pixmapPixel = pixmap.getPixel(i, j); + + buffer[i][j][0] = (pixmapPixel >> 24) & 0xff; // Red. + buffer[i][j][1] = (pixmapPixel >> 16) & 0xff; // Green. + buffer[i][j][2] = (pixmapPixel >> 8) & 0xff; // Blue. + } + } + img = new Texture(pixmap); + } + + @Override + public void render () { + ScreenUtils.clear(1, 0, 0, 1); + + for (int i = 0; i < pixmap.getWidth(); ++i) { + for (int j = 0; j < pixmap.getHeight(); ++j) { + int etalonPixel = etalon.getPixel(i, j); + + int etalonRed = (etalonPixel >> 24) & 0xff; + int etalonGreen = (etalonPixel >> 16) & 0xff; + int etalonBlue = (etalonPixel >> 8) & 0xff; + + if (etalonRed < buffer[i][j][0]) { + --buffer[i][j][0]; + } else if (etalonRed > buffer[i][j][0]) { + ++buffer[i][j][0]; + } + if (etalonGreen < buffer[i][j][1]) { + --buffer[i][j][1]; + } else if (etalonGreen > buffer[i][j][1]) { + ++buffer[i][j][1]; + } + if (etalonBlue < buffer[i][j][2]) { + --buffer[i][j][2]; + } else if (etalonBlue > buffer[i][j][2]) { + ++buffer[i][j][2]; + } + pixmap.setColor((buffer[i][j][0] << 24) | (buffer[i][j][1] << 16) | (buffer[i][j][2] << 8) | 0xff); + pixmap.drawPixel(i, j); + } + } + img.draw(pixmap, 0, 0); + + batch.begin(); + batch.draw(etalonTexture, 0, 0); + batch.draw(img, etalon.getWidth() + 15, 0); + batch.end(); + } + + @Override + public void dispose () { + batch.dispose(); + etalonTexture.dispose(); + etalon.dispose(); + + img.dispose(); + pixmap.dispose(); + } +} |
