summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2008-03-02 16:12:49 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2008-03-02 16:12:49 +0800
commit33642e3dd987107200e220306fad0748294cf127 (patch)
treeb4f1c279c58a0c5a854e201d9ba685b5059dbfc0
parenta0b5dd0ab4ffd5c92bcf6fd5be74f2d1d81d35ad (diff)
downloadpttbbs-33642e3dd987107200e220306fad0748294cf127.tar
pttbbs-33642e3dd987107200e220306fad0748294cf127.tar.gz
pttbbs-33642e3dd987107200e220306fad0748294cf127.tar.bz2
pttbbs-33642e3dd987107200e220306fad0748294cf127.tar.lz
pttbbs-33642e3dd987107200e220306fad0748294cf127.tar.xz
pttbbs-33642e3dd987107200e220306fad0748294cf127.tar.zst
pttbbs-33642e3dd987107200e220306fad0748294cf127.zip
- enable ESC[m as prefix for pmore movie (for some ANSI editors)
- document update git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3957 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--docs/pfterm.txt3
-rw-r--r--docs/pfterm_compat.txt1
-rw-r--r--docs/pmore_movie.txt30
-rw-r--r--mbbsd/pmore.c6
4 files changed, 33 insertions, 7 deletions
diff --git a/docs/pfterm.txt b/docs/pfterm.txt
index 2d742767..a97bd62c 100644
--- a/docs/pfterm.txt
+++ b/docs/pfterm.txt
@@ -53,7 +53,8 @@ void clrscr (void); 清除螢幕但不回到原點
void clrregion (int r1, int r2); 清除[r1,r2]或[r2,r1]的範圍 (雙向)
// flushing 更新畫面
-void refresh (void); 更新畫面 (只送出改變的部份)
+void doupdate (void); 更新畫面 (只送出改變的部份)
+void refresh (void); 更新畫面 (若有輸入按鍵則不更新)
void redrawwin (void); 強制下次更新全部畫面(仍需 refresh)
// scrolling 捲動
diff --git a/docs/pfterm_compat.txt b/docs/pfterm_compat.txt
index 2af3d512..157d239d 100644
--- a/docs/pfterm_compat.txt
+++ b/docs/pfterm_compat.txt
@@ -31,6 +31,7 @@ MultiTerm 3 正常
MultiTerm Pro 2.10b 正常
SimpTerm(sptnet32) 0.9.4 正常
fterm 2.6 正常
+cterm 3.27 正常
CRT 5.0.0 正常
Nally 1.3.3 正常
NetTerm 4.2x 正常(*)
diff --git a/docs/pmore_movie.txt b/docs/pmore_movie.txt
index 5082d9a7..f7693b1e 100644
--- a/docs/pmore_movie.txt
+++ b/docs/pmore_movie.txt
@@ -3,8 +3,8 @@
pmore 2007 互動式動畫系統技術手冊
- VERSION 1.2
- 最後更新: 2007/12/11 0:00
+ VERSION 1.4
+ 最後更新: 2008/03/02 16:00
本文為推廣用說明文件 歡迎自由轉錄
不需另行通知作者
@@ -54,6 +54,7 @@
一個動畫,其實就是一連串的畫面,在連續的時間內交換顯示。
BBS 的文字動畫本質上也是如此。 我們把每次顯示、使用者所看
到的單頁稱之為一個畫面 (英文為 Frame)。
+ 這份文件有時也會用「頁」來描述。
Escape Code 控制碼
@@ -230,7 +231,13 @@
==*[30;40m^L2.5
==*[30;40m^LP*[m
- 註: 為了效能考量,目前只開放 *[30;40m 一字不差的寫法。
+ 最後還有一種寫法與隱藏碼無關,這是由於許多動畫編輯程式會
+ 自動前置 *[m ;為了方便大家所以 pmore 也加入了此類控制碼。
+
+ 範例:
+ *[m^L2.5
+
+ 註: 為了效能考量,目前只開放與上面三種一字不差的寫法。
也就是說, 下列寫法都是錯誤的:
*[0;30;40m^L (前面多了 0;)
*[30;40m ^L (中間多了空白)
@@ -444,6 +451,11 @@
^L#a,f1,選項一#b,f2,選項二 <- 選項二無作用
+ 註: ^L# 在執行時會依順序判斷按鍵是否符合條件。也就是說,
+ 若有熱鍵重複出現則是前面的會被執行。 適當排列並與特殊按鍵 (見 3.1)
+ 如 @a 合用則可作出「按 XX 鍵執行 YY,其它所有鍵都執行 ZZ」的效果。
+
+
=============================================================================
3. 即時互動與進階
@@ -630,6 +642,15 @@
^LG:scn1:,:scn2:,:scn3:
隨意跳到 scn1, scn2, scn3 中的任一個
+ 其中每一項被選中的機率是相等的,所以若要製造出不等的比例,
+ 把某項重複即可:
+
+ ^LGf+1,f-1,f-1,:end:,f+1,f+1
+
+ 有 3/6 的機率前往下一頁
+ 有 2/6 的機率前往前一頁
+ 有 1/6 的機率前往名為 :end: 的頁面
+
=============================================================================
4. 感謝
@@ -648,6 +669,3 @@ Kinra john112136 janetangel slowcloud
=============================================================================
---
-※ 發信站: 批踢踢實業坊(ptt.cc)
-◆ From: 140.112.30.49
diff --git a/mbbsd/pmore.c b/mbbsd/pmore.c
index 1d7b82e0..4d4e7140 100644
--- a/mbbsd/pmore.c
+++ b/mbbsd/pmore.c
@@ -2980,8 +2980,10 @@ mf_movieFrameHeader(unsigned char *p, unsigned char *end)
// So let's go back to fixed format...
static char *patHeader = "==" ESC_STR "[30;40m^L";
static char *patHeader2= ESC_STR "[30;40m^L"; // patHeader + 2; // "=="
+ static char *patHeader3= ESC_STR "[m^L";
static size_t szPatHeader = 12; // strlen(patHeader);
static size_t szPatHeader2 = 10; // strlen(patHeader2);
+ static size_t szPatHeader3 = 5; // strlen(patHeader3);
size_t sz = end - p;
@@ -2995,6 +2997,10 @@ mf_movieFrameHeader(unsigned char *p, unsigned char *end)
return p+2;
// Add more frame headers
+ if (sz < szPatHeader3) return NULL;
+ if (memcmp(p, patHeader3, szPatHeader3) == 0)
+ return p + szPatHeader3;
+
if (sz < szPatHeader2) return NULL;
if (memcmp(p, patHeader2, szPatHeader2) == 0)
return p + szPatHeader2;