SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
標準SVGコマンドだけで実現!  
ラベルエディター
デモンストレーション
ラベルエディター
デモンストレーション
アノテーションエディター
仕様書
ラベル定義ファイル  4LB/IFF
Interchange  File  Format(IFF)は、汎⽤用ファイルフォーマットの⼀一種。
1985年年にエレクトロニック・アーツが、コモドールの  Amiga  向けに異異な
るアプリケーション間でのデータ転送を容易易にするために開発した。
http://ja.wikipedia.org/wiki/Interchange_File_Format
• バイナリ形式の構造ファイル  
• WAV,  AVI,  AIFF,  PNGの元になったフォーマット
仕様書
ラベル定義ファイル  4LB/IFF
$path:=Get 4D folder(Current resources folder)+”My Label.4LB"
DOCUMENT TO BLOB($path;$data)
$dom:=LABEL_Parse_data (->$data)
XMLツリーに展開
印刷
ラベル定義  or  フォームを使⽤用
または
OPEN PRINTING FORM($formName)
FORM LOAD($Table->;$formName)
定義ファイル?
FORM GET OBJECTS($formObjects;*)
FORM LOAD("Template")
$count:=DOM Count XML elements($objects;"object")
For ($i;1;$count)
$object:=DOM Find XML element($objects;…)
End for
NEXT RECORD($Table->)
RELATE ONE($Table->)
NEXT RECORD($Table->)
RELATE ONE($Table->)
$printed:=Print object(*;…)
v14
v13
EXECUTE METHOD(…)
EXECUTE METHOD(…)
レコード毎
レコード毎
オブジェクト毎
いいえ
はい
おまけTips
SVGピクチャの更更新
• SVG SET ATTRIBUTE
✤ 画⾯面上にレンダリングされた画像でなければ使⽤用できない  
✤ バックエンドのXMLを更更新しない  
✤ ⾼高速  
• SVG SET ATTRIBUTE *
• DOM SET XML ATTRIBUTE+SVG EXPORT TO PICTURE
✤ オフスクリーンで使⽤用できる  
✤ バックエンドのXMLを更更新する
おまけTips
shape-‐‑‒rendering属性
ユーザーエージェントは,レンダリング速度度や幾何学的正確性よりも,
図表のエッジにあるコントラストを強調するべきであるという指⽰示⼦子。
エッジをはっきりさせるため,ユーザーエージェントは,⽔水平または垂
直に近い直線,さらには曲線のアンチエイリアスを無効にしても良良い。
ユーザーエージェントは,デバイスのピクセルに合わせて座標位置や線
の幅を揃えることもできる。
auto
geometricPrecision
optimizeSpeed
crispEdges
おまけTips
DOMの移動
• move  back  
• move  back-‐‑‒most  
• move  front  
• move  front  most
DOM Insert XML element
DOM Append XML element
DOM Insert XML element
DOM Insert XML element
おまけTips
move-‐‑‒back
11
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Insert XML element($domParent;$dom;$level)
DOM REMOVE XML ELEMENT($dom)
2
3
2  の⼿手前に  3  を挿⼊入,  それから  3  を削除
3
2
3
おまけTips
move-‐‑‒back
11
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Insert XML element($domParent;$dom;$level)
DOM REMOVE XML ELEMENT($dom)
2 3
2  の⼿手前に  3  を挿⼊入,  それから  3  を削除
3
2
3
おまけTips
move-‐‑‒back
11
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Insert XML element($domParent;$dom;$level)
DOM REMOVE XML ELEMENT($dom)
2 3
2  の⼿手前に  3  を挿⼊入,  それから  3  を削除
3 2
おまけTips
move-‐‑‒back-‐‑‒most
3
1
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Insert XML element($domParent;$dom;$level)
DOM REMOVE XML ELEMENT($dom)
2
3
3  の⼿手前に  1  を挿⼊入,  それから  3  を削除
1
2
3
おまけTips
move-‐‑‒back-‐‑‒most
3
1
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Insert XML element($domParent;$dom;$level)
DOM REMOVE XML ELEMENT($dom)
2
3
3  の⼿手前に  1  を挿⼊入,  それから  3  を削除
1
2
3
おまけTips
move-‐‑‒back-‐‑‒most
3
1
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Insert XML element($domParent;$dom;$level)
DOM REMOVE XML ELEMENT($dom)
2
3
3  の⼿手前に  1  を挿⼊入,  それから  3  を削除
1
2
おまけTips
move-‐‑‒front
1
2
11
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Insert XML element($domParent;$dom;$level)
DOM REMOVE XML ELEMENT($dom)
2
3
3  の⼿手前に  1  を挿⼊入,  それから  1  を削除
3
おまけTips
move-‐‑‒front
1
2
1
1
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Insert XML element($domParent;$dom;$level)
DOM REMOVE XML ELEMENT($dom)
2
3
3  の⼿手前に  1  を挿⼊入,  それから  1  を削除
3
おまけTips
move-‐‑‒front
21
1
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Insert XML element($domParent;$dom;$level)
DOM REMOVE XML ELEMENT($dom)
2
3
3  の⼿手前に  1  を挿⼊入,  それから  1  を削除
3
おまけTips
move-‐‑‒front-‐‑‒most
1
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Append XML element($domParent;$dom)
DOM REMOVE XML ELEMENT($dom)
2
1
2
3
3  の後ろに  2  を追加,  それから  2  を削除
2
3
おまけTips
move-‐‑‒front-‐‑‒most
1
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Append XML element($domParent;$dom)
DOM REMOVE XML ELEMENT($dom)
2
1
2
3
3  の後ろに  2  を追加,  それから  2  を削除
23
おまけTips
move-‐‑‒front-‐‑‒most
1
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Append XML element($domParent;$dom)
DOM REMOVE XML ELEMENT($dom)
2
1
3
3  の後ろに  2  を追加,  それから  2  を削除
23
おまけTips
move-‐‑‒front-‐‑‒most
1
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Append XML element($domParent;$dom)
DOM REMOVE XML ELEMENT($dom)
2
1
2
3
3  の後ろに  2  を追加,  それから  2  を削除
23
おまけTips
move-‐‑‒front-‐‑‒most
1
$domParent:=DOM Get parent XML element($dom)
$newDom:=DOM Append XML element($domParent;$dom)
DOM REMOVE XML ELEMENT($dom)
2
1
2
3
3  の後ろに  2  を追加,  それから  2  を削除
23
重複  id
おまけTips
DOMの移動
• 挿⼊入/追加により,idの重複が発⽣生する  
• DOMを再インデックスしなければならない  
• そうでないとDOM  Find  XML  element  by  IDは混乱した動作になる  
• 簡単なのはソースツリーを再構築(再解析)すること
おまけTips
DOMの再インデックス
C_TEXT($1)
$dom:=$1
$old:=Method called on error
ON ERR CALL("LABEL_ON_ERROR_CALL")
DOM GET XML ATTRIBUTE BY NAME($dom;"temp-id";$id)
ON ERR CALL($old)
If (OK=1)
DOM REMOVE XML ATTRIBUTE($dom;"temp-id")
DOM SET XML ATTRIBUTE($dom;"id";$id)
End if
ARRAY LONGINT($types;0)
ARRAY TEXT($nodes;0)
DOM GET XML CHILD NODES($dom;$types;$nodes)
C_LONGINT($p)
$p:=1
$p:=Find in array($types;XML ELEMENT;$p)
While ($p#-1)
//recursive call
DOM_ELEMENT_RESTORE_ID ($nodes{$p})
$p:=Find in array($types;XML ELEMENT;$p+1)
End while
C_TEXT($1)
$dom:=$1
$old:=Method called on error
ON ERR CALL("LABEL_ON_ERROR_CALL")
DOM GET XML ATTRIBUTE BY NAME($dom;"id";$id)
ON ERR CALL($old)
If (OK=1)
DOM SET XML ATTRIBUTE($dom;"temp-id";$id)
DOM REMOVE XML ATTRIBUTE($dom;"id")
End if
ARRAY LONGINT($types;0)
ARRAY TEXT($nodes;0)
DOM GET XML CHILD NODES($dom;$types;$nodes)
C_LONGINT($p)
$p:=1
$p:=Find in array($types;XML ELEMENT;$p)
While ($p#-1)
//recursive call
DOM_ELEMENT_CLEAR_ID ($nodes{$p})
$p:=Find in array($types;XML ELEMENT;$p+1)
End while
remove restore

Mais conteúdo relacionado

Semelhante a ラベルエディター

PHPの今とこれから2019
PHPの今とこれから2019PHPの今とこれから2019
PHPの今とこれから2019Rui Hirokawa
 
eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜ericsagnes
 
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsBuild Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsmganeko
 
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)nabe-abk
 
EPUB3 固定レイアウト徹底解説
EPUB3 固定レイアウト徹底解説EPUB3 固定レイアウト徹底解説
EPUB3 固定レイアウト徹底解説Youji Sakai
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
All about v13 2013-06-04
All about v13 2013-06-04All about v13 2013-06-04
All about v13 2013-06-04kmiyako
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014Rui Hirokawa
 
Rails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) APIRails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) APIYohei Yasukawa
 
ソフトウェア工学2023 07 バージョン管理
ソフトウェア工学2023 07 バージョン管理ソフトウェア工学2023 07 バージョン管理
ソフトウェア工学2023 07 バージョン管理Toru Tamaki
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013Rui Hirokawa
 
Db2 Warehouse Spark利用ガイド データ操作編
Db2 Warehouse Spark利用ガイド データ操作編Db2 Warehouse Spark利用ガイド データ操作編
Db2 Warehouse Spark利用ガイド データ操作編IBM Analytics Japan
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶHiroshi Oyamada
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021Rui Hirokawa
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Masahito Zembutsu
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 

Semelhante a ラベルエディター (20)

PHPの今とこれから2019
PHPの今とこれから2019PHPの今とこれから2019
PHPの今とこれから2019
 
Vyatta 改造入門
Vyatta 改造入門Vyatta 改造入門
Vyatta 改造入門
 
eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜
 
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsBuild Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.js
 
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
 
EPUB3 固定レイアウト徹底解説
EPUB3 固定レイアウト徹底解説EPUB3 固定レイアウト徹底解説
EPUB3 固定レイアウト徹底解説
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
All about v13 2013-06-04
All about v13 2013-06-04All about v13 2013-06-04
All about v13 2013-06-04
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014
 
Rails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) APIRails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) API
 
ソフトウェア工学2023 07 バージョン管理
ソフトウェア工学2023 07 バージョン管理ソフトウェア工学2023 07 バージョン管理
ソフトウェア工学2023 07 バージョン管理
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013
 
Git (運用編)
Git (運用編)Git (運用編)
Git (運用編)
 
Db2 Warehouse Spark利用ガイド データ操作編
Db2 Warehouse Spark利用ガイド データ操作編Db2 Warehouse Spark利用ガイド データ操作編
Db2 Warehouse Spark利用ガイド データ操作編
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶ
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
01 php7
01   php701   php7
01 php7
 

Mais de kmiyako

Build an iOS app with Ionic and 4D
Build an iOS app with Ionic and 4DBuild an iOS app with Ionic and 4D
Build an iOS app with Ionic and 4Dkmiyako
 
4D WORLD TOUR 2017
4D WORLD TOUR 20174D WORLD TOUR 2017
4D WORLD TOUR 2017kmiyako
 
Inside Multi-Threading
Inside Multi-ThreadingInside Multi-Threading
Inside Multi-Threadingkmiyako
 
Mirroring
MirroringMirroring
Mirroringkmiyako
 
Objects Fields
Objects FieldsObjects Fields
Objects Fieldskmiyako
 
Code Optimisation
Code OptimisationCode Optimisation
Code Optimisationkmiyako
 
Auto Update
Auto UpdateAuto Update
Auto Updatekmiyako
 
Classic Query Editor
Classic Query EditorClassic Query Editor
Classic Query Editorkmiyako
 
Web area-phone-home
Web area-phone-homeWeb area-phone-home
Web area-phone-homekmiyako
 
MONET研究会 #14
MONET研究会 #14MONET研究会 #14
MONET研究会 #14kmiyako
 
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~kmiyako
 
Journaling slides
Journaling slidesJournaling slides
Journaling slideskmiyako
 
Unicode-v11-5
Unicode-v11-5Unicode-v11-5
Unicode-v11-5kmiyako
 
Unicode-v11-0
Unicode-v11-0Unicode-v11-0
Unicode-v11-0kmiyako
 
アップグレードセミナー
アップグレードセミナーアップグレードセミナー
アップグレードセミナーkmiyako
 
4D Write Pro
4D Write Pro4D Write Pro
4D Write Prokmiyako
 

Mais de kmiyako (20)

Build an iOS app with Ionic and 4D
Build an iOS app with Ionic and 4DBuild an iOS app with Ionic and 4D
Build an iOS app with Ionic and 4D
 
4D WORLD TOUR 2017
4D WORLD TOUR 20174D WORLD TOUR 2017
4D WORLD TOUR 2017
 
Leaflet
LeafletLeaflet
Leaflet
 
Inside Multi-Threading
Inside Multi-ThreadingInside Multi-Threading
Inside Multi-Threading
 
4D Tags
4D Tags4D Tags
4D Tags
 
Mirroring
MirroringMirroring
Mirroring
 
Objects Fields
Objects FieldsObjects Fields
Objects Fields
 
Code Optimisation
Code OptimisationCode Optimisation
Code Optimisation
 
Auto Update
Auto UpdateAuto Update
Auto Update
 
Classic Query Editor
Classic Query EditorClassic Query Editor
Classic Query Editor
 
Web area-phone-home
Web area-phone-homeWeb area-phone-home
Web area-phone-home
 
MONET研究会 #14
MONET研究会 #14MONET研究会 #14
MONET研究会 #14
 
4d
4d4d
4d
 
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~
 
Xslt
XsltXslt
Xslt
 
Journaling slides
Journaling slidesJournaling slides
Journaling slides
 
Unicode-v11-5
Unicode-v11-5Unicode-v11-5
Unicode-v11-5
 
Unicode-v11-0
Unicode-v11-0Unicode-v11-0
Unicode-v11-0
 
アップグレードセミナー
アップグレードセミナーアップグレードセミナー
アップグレードセミナー
 
4D Write Pro
4D Write Pro4D Write Pro
4D Write Pro
 

ラベルエディター