Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/origin/develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
kuina committed Jun 17, 2018
2 parents 6a0b4b1 + 72dd2c3 commit d8f8ef7
Show file tree
Hide file tree
Showing 68 changed files with 1,601 additions and 714 deletions.
12 changes: 11 additions & 1 deletion package/readme.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
-------------------------------------------------------------------------------
Kuin Programming Language
v.2018.5.17
v.2018.6.17
(C) Kuina-chan
-------------------------------------------------------------------------------

Expand Down Expand Up @@ -43,6 +43,16 @@ v.2018.5.17
4. 変更履歴
-------------------------------------------------------------------------------

v.2018.6.17
- 互換性が失われる変更
- 「+**」構文の廃止と、オーバーライド元メソッドを参照する「super」構文の
追加
- 16進数リテラルの構文を「16#」から「0x」に変更
- 細かな機能追加
- list.find、list.findLastメソッドの追加
- math@knapsack、math@dijkstra、math@bellmanFord、math@floydWarshall、
draw@filterNone、draw@filterMonotone関数の追加

v.2018.5.17
- 輪郭線を描画するメソッド[email protected]の追加
- トゥーンレンダリングで描画するメソッド[email protected]の追加
Expand Down
12 changes: 6 additions & 6 deletions package/samples/0001_kuinote/main.kn
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ func main()
var menuMain: wnd@Menu :: wnd@makeMenu()
var popupMainFile: wnd@Popup :: wnd@makePopup()
do menuMain.addPopup("&File", popupMainFile)
do popupMainFile.add(16#0001, "&New")
do popupMainFile.add(0x0001, "&New")
do popupMainFile.addLine()
do popupMainFile.add(16#0002, "E&xit")
do popupMainFile.add(0x0002, "E&xit")
var popupMainHelp: wnd@Popup :: wnd@makePopup()
do menuMain.addPopup("&Help", popupMainHelp)
do popupMainHelp.add(16#1001, "&About Kuinote...")
do popupMainHelp.add(0x1001, "&About Kuinote...")
; メニューの登録
do @wndMain.setMenu(menuMain)
; ユーザが操作を行うのを待機する
Expand All @@ -40,11 +40,11 @@ end func
; メニューが選択されたときに呼ばれるイベント関数
func wndMainOnPushMenu(wnd: wnd@WndBase, id: int)
switch(id)
case 16#0001 {New}
case 0x0001 {New}
do @editText.setText("") {テキストを空にする}
case 16#0002 {Exit}
case 0x0002 {Exit}
do @wndMain.close() {ウインドウを閉じる}
case 16#1001 {About Kuinote}
case 0x1001 {About Kuinote}
do wnd@msgBox(@wndMain, "Kuinote\nVersion 1.0.0\n(C)Kuina-chan", "Kuinote", %info, %ok)
end switch
end func
20 changes: 10 additions & 10 deletions package/samples/0002_draw_2d/main.kn
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,23 @@ func main()
var texKuin: draw@Tex :: draw@makeTex("res/kuin.png") {画像の読み込み}
var fontProportional: draw@Font :: draw@makeFont(null, 32, false, false, true, 0.0) {プロポーショナルフォントの生成}
var fontMonospace: draw@Font :: draw@makeFont(null, 32, false, false, false, 40.0) {等幅フォントの生成}
do draw@clearColor(16#FF333333) {背景色の設定}
do draw@clearColor(0xFF333333) {背景色の設定}
while(wnd@act())
do draw@line(100.0, 100.0, 200.0, 200.0, 16#FFFF3333) {線分}
do draw@rectLine(300.0, 100.0, 100.0, 100.0, 16#FF33FF33) {四角形の枠線}
do draw@rect(500.0, 100.0, 100.0, 100.0, 16#FF3333FF) {四角形}
do draw@circle(750.0, 150.0, 50.0, 50.0, 16#FFFFFF33) {円}
do draw@tri(950.0, 100.0, 900.0, 200.0, 1000.0, 200.0, 16#FFFF33FF) {三角形}
do draw@line(100.0, 100.0, 200.0, 200.0, 0xFFFF3333) {線分}
do draw@rectLine(300.0, 100.0, 100.0, 100.0, 0xFF33FF33) {四角形の枠線}
do draw@rect(500.0, 100.0, 100.0, 100.0, 0xFF3333FF) {四角形}
do draw@circle(750.0, 150.0, 50.0, 50.0, 0xFFFFFF33) {円}
do draw@tri(950.0, 100.0, 900.0, 200.0, 1000.0, 200.0, 0xFFFF33FF) {三角形}
for i(0, 3)
do texKuin.draw(100.0 + i $ float * 200.0, 300.0, 0.0, 0.0, 150.0, 150.0, draw@white) {画像}
end for
do draw@rect(175.0, 375.0, 100.0, 100.0, 16#7FFF0000) {半透明}
do draw@rect(175.0, 375.0, 100.0, 100.0, 0x7FFF0000) {半透明}
do draw@blend(%add)
do draw@rect(375.0, 375.0, 100.0, 100.0, 16#FFFF0000) {加算}
do draw@rect(375.0, 375.0, 100.0, 100.0, 0xFFFF0000) {加算}
do draw@blend(%sub)
do draw@rect(575.0, 375.0, 100.0, 100.0, 16#FFFF0000) {減算}
do draw@rect(575.0, 375.0, 100.0, 100.0, 0xFFFF0000) {減算}
do draw@blend(%mul)
do draw@rect(775.0, 375.0, 100.0, 100.0, 16#FFFF0000) {乗算}
do draw@rect(775.0, 375.0, 100.0, 100.0, 0xFFFF0000) {乗算}
do draw@blend(%alpha)
do texKuin.drawScale(100.0, 500.0, 300.0, 300.0, 0.0, 0.0, 150.0, 150.0, draw@white) {拡大}
do texKuin.drawRot(500.0, 575.0, 150.0, 150.0, 0.0, 0.0, 150.0, 150.0, 75.0, 75.0, -draw@cnt() $ float * lib@pi / 60.0, draw@white) {回転}
Expand Down
2 changes: 1 addition & 1 deletion package/samples/0003_draw_3d/main.kn
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ func main()
var objCone: draw@Obj :: draw@makeObj("res/cone.knobj") {コーンモデルの読み込み}
var texCone: draw@Tex :: draw@makeTexEvenArgb(1.0, 0.7, 0.2, 0.1)
var texConeSpecular: draw@Tex :: draw@makeTexEvenArgb(2.0, 0.3, 0.3, 0.3)
do draw@clearColor(16#FF999999) {背景色の設定}
do draw@clearColor(0xFF999999) {背景色の設定}
do draw@depth(true, true) {Zバッファの設定}
do objBoard.pos(20.0, 20.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, -15.0) {板モデルの位置設定}
do objBox.pos(1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0) {箱モデルの位置設定}
Expand Down
Binary file modified package/samples/0003_draw_3d/res/board.knobj
Binary file not shown.
Binary file modified package/samples/0003_draw_3d/res/box.knobj
Binary file not shown.
Binary file modified package/samples/0003_draw_3d/res/cone.knobj
Binary file not shown.
Binary file modified package/samples/0003_draw_3d/res/sphere.knobj
Binary file not shown.
6 changes: 3 additions & 3 deletions package/samples/0005_input/main.kn
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func main()
do font.draw(100.0, 700.0, "'Right' button ('Right' key): " ~ input@pad(0, %right).toStr(), draw@white)
do font.draw(100.0, 750.0, "'Up' button ('Up' key): " ~ input@pad(0, %up).toStr(), draw@white)
do font.draw(100.0, 800.0, "'Down' button ('Down' key): " ~ input@pad(0, %down).toStr(), draw@white)
do draw@circle(@mouseX $ float, @mouseY $ float, 20.0, 20.0, @mouseDownL ?(16#FF0000FF, 16#FFFFFF00))
do draw@circle(@mouseX $ float, @mouseY $ float, 20.0, 20.0, @mouseDownL ?(0xFF0000FF, 0xFFFFFF00))
do font.draw(800.0, 50.0, "Key: " ~ @keyBuf, draw@white)
do draw@render(60)
end while
Expand Down Expand Up @@ -67,11 +67,11 @@ end func

func drawMainOnMouseEnter(wnd: wnd@Draw, x: int, y: int)
do @mouseDownL :: wnd@key(%mouseL) {左ボタンを押したままウインドウ外に出て入りなおす場合の対処}
do draw@clearColor(16#FFFF9999) {ウインドウ内に入ったら背景色をピンクにする}
do draw@clearColor(0xFFFF9999) {ウインドウ内に入ったら背景色をピンクにする}
end func

func drawMainOnMouseLeave(wnd: wnd@Draw)
do draw@clearColor(16#FF000000) {ウインドウ外に出たら背景色を黒にする}
do draw@clearColor(0xFF000000) {ウインドウ外に出たら背景色を黒にする}
end func

func drawMainOnKeyChar(wnd: wnd@Draw, key: char)
Expand Down
8 changes: 4 additions & 4 deletions package/samples/0009_file/main.kn
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ end func
; 暗号化の鍵を生成する関数
func getKey(): []bit8
; 鍵は32byteでなければならない
ret[16#12b8, 16#34b8, 16#56b8, 16#78b8, 16#9Ab8, 16#BCb8, 16#DEb8, 16#F0b8,
|16#75b8, 16#38b8, 16#9Bb8, 16#C4b8, 16#21b8, 16#A0b8, 16#DFb8, 16#E6b8,
|16#49b8, 16#2Fb8, 16#B5b8, 16#3Db8, 16#01b8, 16#68b8, 16#7Ab8, 16#CEb8,
|16#F0b8, 16#52b8, 16#CAb8, 16#E6b8, 16#89b8, 16#D7b8, 16#4Bb8, 16#31b8]
ret[0x12b8, 0x34b8, 0x56b8, 0x78b8, 0x9Ab8, 0xBCb8, 0xDEb8, 0xF0b8,
|0x75b8, 0x38b8, 0x9Bb8, 0xC4b8, 0x21b8, 0xA0b8, 0xDFb8, 0xE6b8,
|0x49b8, 0x2Fb8, 0xB5b8, 0x3Db8, 0x01b8, 0x68b8, 0x7Ab8, 0xCEb8,
|0xF0b8, 0x52b8, 0xCAb8, 0xE6b8, 0x89b8, 0xD7b8, 0x4Bb8, 0x31b8]
end func
4 changes: 2 additions & 2 deletions package/samples/0012_kuina_chan_model/main.kn
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ func main()
var obj: draw@Obj :: draw@makeObj("res/kuina_chan.knobj") {くいなちゃんモデルの読み込み}
var texAlbedo: draw@Tex :: draw@makeTex("res/albedo.png") {くいなちゃんモデル用のアルベドテクスチャの読み込み}
var texNormal: draw@Tex :: draw@makeTexArgb("res/normal.png") {くいなちゃんモデル用の法線マップテクスチャの読み込み}
do draw@clearColor(16#FFEEEEEE) {背景色の設定}
do draw@clearColor(0xFFEEEEEE) {背景色の設定}
do draw@depth(true, true) {Zバッファの設定}
do obj.pos(1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0) {くいなちゃんモデルの位置設定}
var angle: float :: 0.0 {カメラの角度}
Expand All @@ -16,7 +16,7 @@ func main()
do angle :+ lib@pi / 120.0 {4秒間に1周させる}
do draw@camera(80.0 * lib@sin(angle), 4.0, 80.0 * lib@cos(angle), 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) {カメラの設定}
do obj.drawToon(0, anim, texAlbedo, null, texNormal) {くいなちゃんモデルの描画}
do obj.drawOutline(0, anim, 0.05, 16#FF664444) {輪郭線の描画}
do obj.drawOutline(0, anim, 0.05, 0xFF664444) {輪郭線の描画}
do anim :: (anim + 0.5) % 60.0 {アニメーションを行う}
do draw@render(60)
end while
Expand Down
28 changes: 17 additions & 11 deletions package/sys/draw.kn
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
+const white: int :: 16#FFFFFFFF
+const black: int :: 16#FF000000
+const white: int :: 0xFFFFFFFF
+const black: int :: 0xFF000000

+func [d0001.knd, _target] target(drawCtrl: wnd@Draw)
end func
Expand Down Expand Up @@ -56,20 +56,26 @@ end func
+func [d0001.knd, _circle, _1] circle(x: float, y: float, radiusX: float, radiusY: float, color: int)
end func

+func [d0001.knd, _filterNone] filterNone()
end func

+func [d0001.knd, _filterMonotone, _2] filterMonotone(color: int, rate: float)
end func

+class Tex()
*func [d0001.knd, _texDtor, _force] _dtor()
end func

*func [_force] _copy(): kuin@Class
throw 16#E9170005
throw 0xE9170005
end func

*func [_force] _toBin(): []bit8
throw 16#E9170005
throw 0xE9170005
end func

*func [_force] _fromBin(bin: []bit8, idx: &int): kuin@Class
throw 16#E9170005
throw 0xE9170005
end func

+func [d0001.knd, _texDraw] draw(dstX: float, dstY: float, srcX: float, srcY: float, srcW: float, srcH: float, color: int)
Expand Down Expand Up @@ -103,15 +109,15 @@ end func
end func

*func [_force] _copy(): kuin@Class
throw 16#E9170005
throw 0xE9170005
end func

*func [_force] _toBin(): []bit8
throw 16#E9170005
throw 0xE9170005
end func

*func [_force] _fromBin(bin: []bit8, idx: &int): kuin@Class
throw 16#E9170005
throw 0xE9170005
end func

+func [d0001.knd, _fontDraw] draw(dstX: float, dstY: float, text: []char, color: int)
Expand Down Expand Up @@ -155,15 +161,15 @@ end func
end func

*func [_force] _copy(): kuin@Class
throw 16#E9170005
throw 0xE9170005
end func

*func [_force] _toBin(): []bit8
throw 16#E9170005
throw 0xE9170005
end func

*func [_force] _fromBin(bin: []bit8, idx: &int): kuin@Class
throw 16#E9170005
throw 0xE9170005
end func

+func [d0001.knd, _objDraw] draw(element: int, frame: float, diffuse: @Tex, specular: @Tex, normal: @Tex)
Expand Down
38 changes: 19 additions & 19 deletions package/sys/excpt.kn
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
+const userMin: int :: 16#00000000
+const userMax: int :: 16#0000FFFF
+const accessViolation: int :: 16#C0000005
+const noMem: int :: 16#C0000017
+const floatInvalidOperation: int :: 16#C0000090
+const intDivideByZero: int :: 16#C0000094
+const stackOverflow: int :: 16#C00000FD
+const ctrlCExit: int :: 16#C000013A
+const dbgAssertFailed: int :: 16#E9170000
+const classCastFailed: int :: 16#E9170001
+const dbgArrayIdxOutOfRange: int :: 16#E9170002
+const dbgIntOverflow: int :: 16#E9170003
+const invalidCmp: int :: 16#E9170004
+const libClassInvalidOperation: int :: 16#E9170005
+const dbgArgOutDomain: int :: 16#E9170006
+const fileReadFailed: int :: 16#E9170007
+const invalidDataFmt: int :: 16#E9170008
+const deviceInitFailed: int :: 16#E9170009
+const dbgInoperableState: int :: 16#E917000A
+const userMin: int :: 0x00000000
+const userMax: int :: 0x0000FFFF
+const accessViolation: int :: 0xC0000005
+const noMem: int :: 0xC0000017
+const floatInvalidOperation: int :: 0xC0000090
+const intDivideByZero: int :: 0xC0000094
+const stackOverflow: int :: 0xC00000FD
+const ctrlCExit: int :: 0xC000013A
+const dbgAssertFailed: int :: 0xE9170000
+const classCastFailed: int :: 0xE9170001
+const dbgArrayIdxOutOfRange: int :: 0xE9170002
+const dbgIntOverflow: int :: 0xE9170003
+const invalidCmp: int :: 0xE9170004
+const libClassInvalidOperation: int :: 0xE9170005
+const dbgArgOutDomain: int :: 0xE9170006
+const fileReadFailed: int :: 0xE9170007
+const invalidDataFmt: int :: 0xE9170008
+const deviceInitFailed: int :: 0xE9170009
+const dbgInoperableState: int :: 0xE917000A
24 changes: 12 additions & 12 deletions package/sys/file.kn
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ end enum
end func

*func [_force] _copy(): kuin@Class
throw 16#E9170005
throw 0xE9170005
end func

*func [_force] _toBin(): []bit8
throw 16#E9170005
throw 0xE9170005
end func

*func [_force] _fromBin(bin: []bit8, idx: &int): kuin@Class
throw 16#E9170005
throw 0xE9170005
end func

+func [d0000.knd, _streamFin] fin()
Expand Down Expand Up @@ -70,15 +70,15 @@ end class
end func

*func [_force] _copy(): kuin@Class
throw 16#E9170005
throw 0xE9170005
end func

*func [_force] _toBin(): []bit8
throw 16#E9170005
throw 0xE9170005
end func

*func [_force] _fromBin(bin: []bit8, idx: &int): kuin@Class
throw 16#E9170005
throw 0xE9170005
end func

+func [d0000.knd, _streamFin] fin()
Expand Down Expand Up @@ -118,12 +118,12 @@ end func
end func

+enum SysDir
desktop :: 16#00
fonts :: 16#14
appData :: 16#1A
windows :: 16#24
system32 :: 16#25
programFiles :: 16#26
desktop :: 0x00
fonts :: 0x14
appData :: 0x1A
windows :: 0x24
system32 :: 0x25
programFiles :: 0x26
end enum

+func [d0000.knd, _makeDir] makeDir(path: []char): bool
Expand Down
34 changes: 17 additions & 17 deletions package/sys/input.kn
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
end enum

+enum Key
esc :: 16#01
esc :: 0x01
_1
_2
_3
Expand Down Expand Up @@ -101,31 +101,31 @@ end enum
num3
num0
numPeriod
f11 :: 16#57
f11 :: 0x57
f12
kana :: 16#70
convert :: 16#79
noConvert :: 16#7B
yen :: 16#7D
circumflex :: 16#90
kanji :: 16#94
numEnter :: 16#9C
kana :: 0x70
convert :: 0x79
noConvert :: 0x7B
yen :: 0x7D
circumflex :: 0x90
kanji :: 0x94
numEnter :: 0x9C
ctrlR
numSlash :: 16#B5
sysRq :: 16#B7
numSlash :: 0xB5
sysRq :: 0xB7
altR
pause :: 16#C5
home :: 16#C7
pause :: 0xC5
home :: 0xC7
up
pageUp
left :: 16#CB
right :: 16#CD
end_ :: 16#CF
left :: 0xCB
right :: 0xCD
end_ :: 0xCF
down
pageDown
ins
del
winL :: 16#DB
winL :: 0xDB
winR
menu
end enum
Expand Down
Loading

0 comments on commit d8f8ef7

Please sign in to comment.