AWK˜plus for Java

GUI アプリ

桔梗
「画像ビューアで良ければ、サンプルが既にありますよ~」
『(お色気画像) 見た~い』

コードから見る AWK˜plus

/** AWK~plus - Image Viewer.
 */
import java.awt.Point
import java.awt.event.ActionListener
import java.awt.event.MouseEvent
import javax.swing.ImageIcon
import javax.swing.JFrame
import javax.swing.JLabel
import javax.swing.SwingConstants
import javax.swing.Timer
import plus.awt.Mouse
import plus.reflect.Reflection
val imageLabel = new JLabel("", SwingConstants.CENTER)
val frame = new JFrame("AWK~plus - ImageViewer")
val DELAY_SECONDS = 10  # 表示間隔
val FRAME_HEIGHT = 600  # 画像サイズ
val FRAME_WIDTH = 400
var imgnumber = 0
var images = ""
var imgpos = -1
BEGIN {
    images = ARGV[1]    # 画像のパス
    imgnumber = ARGV[2] # 画像の枚数
    frame.setDefaultCloseOperation(3)
    val dim = frame.getToolkit().getScreenSize
    frame.setLocation(new Point(dim.width - 8 - FRAME_WIDTH, dim.height - 32 - FRAME_HEIGHT))
    val container = frame.getContentPane
        container.add(imageLabel)
    val adapter = new Mouse(.mouseDragged(null), .mousePressed(null))
        container.addMouseListener(adapter); container.addMouseMotionListener(adapter)
    actionPerformed(null)
    frame.pack
    frame.setVisible(true)
    val actionListener: ActionListener =
        Reflection.implement("java.awt.event.ActionListener", .actionPerformed(null))
    new Timer(1000 * DELAY_SECONDS, actionListener).start
}
function actionPerformed(actionEvent) {
    imgpos = ++imgpos % imgnumber
    imageLabel.setIcon(new ImageIcon(images "/" imgpos ".jpg"))
}
function mouseDragged(e: MouseEvent) {
    val opacity: Float = 0.01 * (100 - Math.abs(e.getY) % 100)
    frame.setOpacity(opacity)  # Java8 No longer supported
}
function mousePressed(e: MouseEvent) {  # Right button click
    if (1 != e.getButton) frame.setAlwaysOnTop(!frame.isAlwaysOnTop)
}
  • マウス右ボタンで、ウィンドウを最前列 / 通常表示に切り替え可能
  • ドラッグで透明度を変更できたんですが、Java 11 あたりで Sun API が削除されました

Gallery

1 2 3
4 5 6
7 8 9

「日本橋 (東京で言えば秋葉原) ストリートフェスタ 2019」の写真で 1日で20万人以上集まります

「ええ趣味しとるやないか」

おまけ

MATRIX HTMLスクリーンセーバー (Firefoxバージョン)
MATRIX HTMLスクリーンセーバー (Chrome, Edgeバージョン)

終わりに、AWK のおすすめ本

  1. 「 プログラミング言語AWK」AWK開発者達が書いた、教科書+アルゴリズム本、1989年
  2. 「 AWKを256倍使うための本」アスキー、1993年
  3. 「GAWK」GNU AWK Man
  4. 日本では、月間ASCIIが特集を組み一大ブームが巻き起こった、1989~1991年

オープンソース

インストール

  1. Java をダウンロード(環境を汚さない .zip 版を推奨、複数の Javaもインストールできます)「Java Downloads」
  2. AWK~plus をダウンロード「AWK~plus for Java」 (コマンドを添付しています)
  3. AWK~plus フォルダ中の makefile の JAVAHOME 変数に Javaホームパスを設定します。

実行

ターミナルを開き、AWK~plus フォルダをカレントディレクトリにして、と入力します。

「Blog top」 2022.9.4