diff options
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty | 456 |
1 files changed, 456 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty b/Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty new file mode 100644 index 00000000000..11668a9105d --- /dev/null +++ b/Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty @@ -0,0 +1,456 @@ +%% +%% This is file `bidi-media9.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% bidi.dtx (with options: `table,bidi-media9.sty') +%% +%% __________________________________________________ +%% Copyright (c) 2009--2015 Vafa Khalighi <persian-tex@tug.org> +%% +%% It may be distributed and/or modified under the LaTeX Project Public License, +%% version 1.3c or higher (your choice). The latest version of +%% this license is at: http://www.latex-project.org/lppl.txt +%% +%% This work is “author-maintained” (as per LPPL maintenance status) +%% by Vafa Khalighi. +%% +%% +%% \CheckSum{45985} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\ProvidesExplPackage{bidi-media9}{2015/11/24}{0.1} +{bidi fixes for media9 package for the XeTeX engine} + +\keys_define:nn{media9/mbtn}{ + overface .code:n = { + \hbox_set:Nn\l_mix_poster_box{\if@RTL\beginR\fi#1\if@RTL\endR\fi} + \mix_pdfxform:n{\l_mix_poster_box} + \tl_gset:Nx\g_mix_overbtn_tl{\mix_pdflastxform:} + }, + overface .value_required:n = {true}, + + downface .code:n = { + \hbox_set:Nn\l_mix_poster_box{\if@RTL\beginR\fi#1\if@RTL\endR\fi} + \mix_pdfxform:n{\l_mix_poster_box} + \tl_gset:Nx\g_mix_downbtn_tl{\mix_pdflastxform:} + }, + downface .value_required:n = {true} +} + +\RenewDocumentCommand\includemedia{O{}mm}{%#1 options, #2 text/image #3 media file + \mix_uriend: + \group_begin: + \beginL + \leavevmode + %empty stream as appearance dummy + \cs_if_exist:NF\g_mix_appearance_tl{ + \hbox_set:Nn\l_mix_poster_box{\phantom{\rule{1pt}{1pt}}} + \mix_pdfxform:n{\l_mix_poster_box} + \tl_gset:Nx\g_mix_appearance_tl{\mix_pdflastxform:} + } + \mix_reset: + \mix_uribegin: %treat URI characters correctly + \keys_set:nn{media9/user}{#1} + \mix_uriend: + \tl_greplace_all:Nnn\g_mix_flashvars_tl{~&}{&} + \tl_greplace_all:Nnn\g_mix_flashvars_tl{&~}{&} + \tl_greplace_all:Nnn\g_mix_flashvars_tl{~=}{=} + \tl_greplace_all:Nnn\g_mix_flashvars_tl{=~}{=} + \tl_gtrim_spaces:N\g_mix_flashvars_tl + + \cs_if_exist:NT\Ginput@path{\cs_set_eq:NN\input@path\Ginput@path} + + \hbox_set:Nn\l_mix_poster_box{\group_begin:\if@RTL\beginR\fi#2\if@RTL\endR\fi\group_end:} + %\hbox_set:Nn\l_mix_poster_box{#2} + \mix_scale:n{\l_mix_poster_box} + \bool_if:nT{ + \dim_compare_p:n{\g_mix_tt_tl=\c_zero_dim}|| + \dim_compare_p:n{\g_mix_wd_tl=\c_zero_dim} + }{ + \tl_gset:Nn\g_mix_usrpbtn_tl{none} + } + \bool_if:NTF\g_mix_usrdraft_bool{ + \tl_if_empty:NF\g_mix_usrlabel_tl{ + \mix_keytoaux_now:nn{ann@\g_mix_usrlabel_tl}{draft} + } + \tl_if_blank:oTF{#2}{ + \mix_uribegin: %treat URI characters correctly + \mix_draftbox:n{\tl_to_str:n{#3}} + \mix_uriend: + }{ + \hbox_to_wd:nn{\g_mix_wd_tl}{ + \vrule~width~\c_zero_dim~height~\g_mix_ht_tl~depth~\g_mix_dp_tl + \box_use:N\l_mix_poster_box\hss + } + } + }{ + \bool_if:nF{\str_if_eq_p:Vn\g_mix_usrpbtn_tl{none}}{ + %attach script that switches off play button overlay upon activation + \mix_pdfobj:nnn{}{stream}{ + var~ocgs=host.getOCGs(host.pageNum); + for(var~i=0;i<ocgs.length;i++){ + if(ocgs[i].name=='MediaPlayButton\int_use:N\g_mix_rmcnt_int'){ + ocgs[i].state=false; + } + } + } + \mix_pdfobj:nnn{}{dict}{ + /Type/Filespec/EF~<</F~\mix_pdflastobj:>>/F~(btnoff)%/UF~(btnoff) + } + \tl_gset:Nx\g_mix_assets_tl{(btnoff)~\mix_pdflastobj:} + \tl_set:Nx\l_mix_scripts_tl{~\mix_pdflastobj:~} + %enforce plain playbutton overlay for XeTeX + \sys_if_engine_xetex:T{\tl_gset:Nn\g_mix_usrpbtn_tl{plain}} + } + %embed main asset + \mix_uribegin: + \mix_embedasset:n{#3} + \bool_if:nTF{ + \str_if_eq_p:Vn\l_mix_ext_tl{prc}||\str_if_eq_p:Vn\l_mix_ext_tl{u3d} + }{ + \bool_gset_true:N\g_mix_iiid_bool + \tl_gset:Nn\g_mix_mainassetsub_tl{3D} + }{ + \str_case_x:nnF{\l_mix_base_tl}{ + {APlayer}{\tl_gset:Nn\g_mix_mainassetsub_tl{Sound}} + {AudioPlayer}{\tl_gset:Nn\g_mix_mainassetsub_tl{Sound}} + {VPlayer}{\tl_gset:Nn\g_mix_mainassetsub_tl{Video}} + {VideoPlayer}{\tl_gset:Nn\g_mix_mainassetsub_tl{Video}} + {StrobeMediaPlayback}{\tl_gset:Nn\g_mix_mainassetsub_tl{Video}} + }{\tl_gset:Nn\g_mix_mainassetsub_tl{Flash}} + } + \tl_gset:Nx\g_mix_mainasset_tl{~\g_mix_lastasset_tl} + \mix_uriend: + %secondary assets (added by addresource) + \seq_map_function:NN\g_mix_res_seq\mix_embedasset:n + \seq_map_inline:Nn\g_mix_script_seq{ + \mix_embedasset:n{##1} + \tl_put_right:Nx\l_mix_scripts_tl{~\g_mix_lastasset_tl} + } + %attach 3D calculation script + \bool_if:nT{\g_mix_iiid_bool && \g_mix_iiidcalc_bool}{ + \mix_embedasset:n{3Dmenu.js} + \tl_put_left:Nx\l_mix_scripts_tl{\g_mix_lastasset_tl~} + } + %create 3D views from file (option 3Dviews) + \bool_if:nT{\g_mix_iiid_bool && !(\tl_if_blank_p:V\g_mix_vfile_tl)}{ + \tl_set:Nn\l_mix_level_tl{\c_minus_one} + \int_zero:N\l_mix_viewcnt_int + \int_zero:N\l_mix_lineno_int + + \ior_open:Nn\l_mix_vfile_stream{\g_mix_vfile_tl} + \ior_map_inline:Nn\l_mix_vfile_stream{ + \int_incr:N\l_mix_lineno_int + \keys_set:nn{media9/views}{##1} %process input line + } + \ior_close:N\l_mix_vfile_stream + } + \bool_if:nT{ %create default 3D view if required + \g_mix_iiid_bool && + (\g_mix_opt_iiidview_bool || \tl_if_blank_p:V\l_mix_iiidviewarray_tl) + }{ + \tl_set_eq:NN\l_mix_bg_tl\g_mix_opt_bg_tl + \tl_set_eq:NN\l_mix_ls_tl\g_mix_opt_ls_tl + \tl_set_eq:NN\l_mix_rm_tl\g_mix_opt_rm_tl + \tl_set_eq:NN\l_mix_psob_tl\g_mix_opt_psob_tl + \tl_set_eq:NN\l_mix_coo_tl\g_mix_opt_coo_tl + \tl_set_eq:NN\l_mix_ctoc_tl\g_mix_opt_ctoc_tl + \tl_set_eq:NN\l_mix_ciiw_tl\g_mix_opt_ciiw_tl + + \fp_set_eq:NN\l_mix_roo_fp\g_mix_opt_roo_fp + \fp_set_eq:NN\l_mix_aac_fp\g_mix_opt_aac_fp + \fp_set_eq:NN\l_mix_oscale_fp\g_mix_opt_oscale_fp + \fp_set_eq:NN\l_mix_roll_fp\g_mix_opt_roll_fp + + \bool_set_eq:NN\l_mix_ciiw_bool\g_mix_opt_ciiw_bool + \bool_set_eq:NN\l_mix_iiidortho_bool\g_mix_opt_iiidortho_bool + \tl_clear:N\l_mix_naarray_tl + + \bool_if:NF\l_mix_ciiw_bool{ + \tl_set:Nx\l_mix_args_tl{\l_mix_coo_tl\space\l_mix_ctoc_tl\space} + \exp_after:wN\mix_calc_ciiw:w\l_mix_args_tl\q_stop + } + + \tl_clear:N\l_mix_naarray_tl + \tl_clear:N\l_mix_saarray_tl + \tl_set_eq:NN\l_mix_nr_tl\g_mix_nrdflt_tl + + \mix_view:n{Default} + \tl_set:Nx\l_mix_dfltview_tl{\mix_pdflastobj:} + + } + \mix_pdfobj:nnn{}{dict}{ + /Type/RichMediaInstance + /Subtype/\g_mix_mainassetsub_tl + /Asset~\g_mix_mainasset_tl + \bool_if:NF\g_mix_iiid_bool{ + /Params~<< + /Binding\str_if_eq:VnTF\g_mix_transp_tl{true}{ + /Foreground + }{ + /Background + } + \tl_if_blank:VF\g_mix_flashvars_tl{ + /FlashVars~(\g_mix_flashvars_tl) + } + >> + } + } + \tl_if_empty:NF\g_mix_usrlabel_tl{ + \mix_keytoaux_now:nn{main@\g_mix_usrlabel_tl}{\mix_pdflastobj:} + } + \mix_pdfobj:nnn{}{dict}{ + /Type/RichMediaConfiguration + /Subtype/\g_mix_mainassetsub_tl + /Instances~[\mix_pdflastobj:] + } + \mix_pdfobj:nnn{}{dict}{ + /Type/RichMediaContent + /Assets~<</Names~[\g_mix_assets_tl]>> + /Configurations~[\mix_pdflastobj:] + \bool_if:nT{ + \g_mix_iiid_bool && !(\tl_if_empty_p:V\l_mix_iiidviewarray_tl) + }{ + /Views~[\l_mix_iiidviewarray_tl] + } + } + \tl_set:Nx\l_mix_content_tl{\mix_pdflastobj:} + \bool_if:nT{ + \g_mix_iiid_bool && \str_if_eq_p:Vn\g_mix_playtpe_tl{Oscillating} + }{ + \tl_gset:Nx\g_mix_playcnt_tl{\int_eval:n{\g_mix_playcnt_tl*2}} + } + %determine floating window size + \bool_if:NT\g_mix_opt_windowed_bool{ + \exp_after:wN\mix_parse_winsizearg:w\g_mix_winsize_tl\q_stop + } + \mix_pdfobj:nnn{}{dict}{ + /Activation~<< + /Condition\g_mix_act_tl + \bool_if:nT{ + \g_mix_iiid_bool && + !(\str_if_eq_p:Vn\g_mix_playtpe_tl{None}) + }{%seems to work only with 3D content + /Animation~<< + /Subtype/\g_mix_playtpe_tl + /PlayCount~\g_mix_playcnt_tl + /Speed~\g_mix_playspd_tl + >> + } + \bool_if:nT{ + \g_mix_iiid_bool && ( + \g_mix_opt_iiidview_bool || \tl_if_blank_p:V\l_mix_iiidviewarray_tl + ) + }{/View~\l_mix_dfltview_tl} + /Presentation~<< + /Transparent~\g_mix_transp_tl + \bool_if:NTF\g_mix_opt_windowed_bool{ + /Style/Windowed + /Window~<< + /Width~<</Default~\tl_mix_fltwd>> + /Height~<</Default~\tl_mix_fltht>> + /Position~<< + /HOffset~0/VOffset~0 + \str_case_x:nnF{\g_mix_winpos_tl}{ + {tl}{/VAlign/Near/HAlign/Near} + {cl}{/VAlign/Center/HAlign/Near} + {bl}{/VAlign/Far/HAlign/Near} + {bc}{/VAlign/Far/HAlign/Center} + {br}{/VAlign/Far/HAlign/Far} + {cr}{/VAlign/Center/HAlign/Far} + {tr}{/VAlign/Near/HAlign/Far} + {tc}{/VAlign/Near/HAlign/Center} + }{/HAlign/Center/VAlign/Center} + >> + >> + }{ + /Style/Embedded + } + \bool_if:NTF\g_mix_iiid_bool{ + /Toolbar~\g_mix_tools_tl + /NavigationPane~\g_mix_nav_tl + }{ + /PassContextClick~\g_mix_contextclick_tl + } + >> + \tl_if_blank:VF\l_mix_scripts_tl{/Scripts~[\l_mix_scripts_tl]} + >> + /Deactivation~<</Condition\g_mix_deact_tl>> + } + \tl_set:Nx\l_mix_settings_tl{\mix_pdflastobj:} + \tl_if_empty:NF\g_mix_usrlabel_tl{ + \tl_gset_eq:NN\g_mix_label_tl\g_mix_usrlabel_tl + } + % #1:width, #2:height, #3:depth, #4:content (key-value) + \mix_pdfannot:nnnn{\g_mix_wd_tl}{\g_mix_ht_tl}{\g_mix_dp_tl}{ + /Subtype/RichMedia + /F~4\cs_if_exist_use:N\ocgxii@insert@OC + /BS~<</W~0/S/S>> + /Contents~(media~embedded~by~media9~[\g_mix_version_tl~(\g_mix_date_tl)]) + /NM~(\g_mix_label_tl) + /AP~<</N~\g_mix_appearance_tl>> + /RichMediaSettings~\l_mix_settings_tl + /RichMediaContent~\l_mix_content_tl + } + \tl_if_empty:NF\g_mix_usrlabel_tl{ + \mix_keytoaux_now:nn{ann@\g_mix_usrlabel_tl}{\mix_pdflastann:} + \mix_keytoaux_shipout:nn{page@\g_mix_usrlabel_tl}{ + \noexpand\the\g@mix@page@int} + } + \mix_pdfobj:nnn{}{dict}{ + /S/JavaScript/JS~( + try{ + if(typeof(annotRM)=='undefined'){annotRM=new~Array();} + if(typeof(annotRM['\g_mix_label_tl'])=='undefined'){ + annotRM['\g_mix_label_tl']= + this.getAnnotRichMedia(this.pageNum,'\g_mix_label_tl'); + } + \str_if_eq_x:nnF{\g_mix_usrpbtn_tl}{none}{ + if(typeof(ocgBtn\int_use:N\g_mix_rmcnt_int)=='undefined'){ + var~ocgs=this.getOCGs(this.pageNum); + for(var~i=0;i<ocgs.length;i++){ + if(ocgs[i].name=='MediaPlayButton\int_use:N\g_mix_rmcnt_int'){ + var~ocgBtn\int_use:N\g_mix_rmcnt_int=ocgs[i]; + } + } + } + if( + !annotRM['\g_mix_label_tl'].activated&&( + app.viewerType=='Reader'|| + app.viewerType=='Exchange'|| + app.viewerType=='Exchange-Pro' + )&&app.viewerVersion>=9 + ){ + ocgBtn\int_use:N\g_mix_rmcnt_int.state=true; + } + } + }catch(e){} + this.dirty=false; + ) + } + \mix_pdfannot:nnnn{0pt}{0pt}{0pt}{ + /Subtype/Widget + /FT/Btn/Ff~65537/F~2 + /BS~<</W~0>> + /T~(fd@\g_mix_label_tl) + /AA~<</PO~\mix_pdflastobj:~/PV~\mix_pdflastobj:>> + } + \tl_gput_right:Nx\@anim@fields{\space\mix_pdflastann:\space} + \hbox_overlap_right:n{\box_use:N\l_mix_poster_box} + \str_if_eq_x:nnTF{\g_mix_usrpbtn_tl}{none}{ + \hbox_to_wd:nn{\g_mix_wd_tl}{ + \vrule~width~\c_zero_dim~height~\g_mix_ht_tl~depth~\g_mix_dp_tl\hss + } + }{%insert play button overlay + \mix_insert_btnocg: %create OCG + \cs_gset_eq:Nc\mix_pbtn:NN{g@mix@pbtn@\g_mix_usrpbtn_tl @tl} + \hbox_set:Nn\l_mix_pbtn_box{\mix_pbtn:NN\g_mix_wd_tl\g_mix_tt_tl} + \box_move_down:nn{\g_mix_dp_tl}{ + \hbox_to_wd:nn{\g_mix_wd_tl}{ + \vbox_to_ht:nn{\g_mix_tt_tl}{ + \vss + \ocgbase_oc_bdc:n{\g_mix_btnocg_tl} + \box_use:N\l_mix_pbtn_box + \ocgbase_oc_emc: + } + } + } + } + \int_gincr:N\g_mix_rmcnt_int + } + \endL + \group_end: +} +\tl_set_eq:NN\l_mix_includemedia_tl\includemedia +\tl_set:Nn\includemedia{\mix_uribegin:\l_mix_includemedia_tl} + +\RenewDocumentCommand\mediabutton{O{}m}{%#1 options, #2 normal button text + \mix_uriend: + \group_begin: + \beginL + \leavevmode + %reset various variables + \tl_gclear:N\g_mix_overbtn_tl + \tl_gclear:N\g_mix_downbtn_tl + \tl_gclear:N\g_mix_btnactions_tl + \tl_gclear:N\g_mix_tooltip_tl + %process options + \bool_gset_eq:NN\g_mix_btndraft_bool\g_mix_pkgdraft_bool + \mix_uribegin: %treat URI characters correctly + \keys_set:nn{media9/mbtndraft}{#1} %detect draft/final on first pass + \bool_if:NF\g_mix_btndraft_bool{\keys_set:nn{media9/mbtn}{#1}} + \mix_uriend: + %normal button appearance + \hbox_set:Nn\l_mix_poster_box{\if@RTL\beginR\fi#2\if@RTL\endR\fi} + \tl_set:Nx\width {\dim_use:N\box_wd:N\l_mix_poster_box} + \tl_set:Nx\height{\dim_use:N\box_ht:N\l_mix_poster_box} + \tl_set:Nx\depth {\dim_use:N\box_dp:N\l_mix_poster_box} + \bool_if:NTF\g_mix_btndraft_bool{\box_use:N\l_mix_poster_box}{ + \mix_pdfxform:n{\l_mix_poster_box} + \tl_set:Nx\g_mix_normalbtn_tl{\mix_pdflastxform:} + \bool_if:nT{ %dummy Widget for ocgx2, AR seems to need it + !\cs_if_exist:NTF\ocgxii@insert@OC{ + \tl_if_blank_p:V\ocgxii@insert@OC + }{ + \c_true_bool + } + }{\mix_pdfannot:nnnn{\width}{\height}{\depth}{/Subtype/Widget/F~2}} + %insert widget annotation + \mix_pdfannot:nnnn{\width}{\height}{\depth}{ + /Subtype/Widget + /T~(mbtn@\int_use:N\g_mix_mbtncnt_int) + \tl_if_empty:NF\g_mix_tooltip_tl{/TU~(\g_mix_tooltip_tl)} + /FT/Btn/Ff~65536\cs_if_exist_use:N\ocgxii@insert@OC + \tl_if_empty:NTF\g_mix_downbtn_tl{/H/I}{/H/P} + /AP~<< + /N~\g_mix_normalbtn_tl + \tl_if_empty:NF\g_mix_overbtn_tl{/R~\g_mix_overbtn_tl} + \tl_if_empty:NF\g_mix_downbtn_tl{/D~\g_mix_downbtn_tl} + >> + /MK~<< + /TP~1~/IF~<</S/A/FB~true/A~[0.0~0.0]>> + /I~\g_mix_normalbtn_tl + \tl_if_empty:NF\g_mix_overbtn_tl{/RI~\g_mix_overbtn_tl} + \tl_if_empty:NF\g_mix_downbtn_tl{/IX~\g_mix_downbtn_tl} + >> + /A~<< + /S/JavaScript/JS~(app.focusRect=false;) + %sequence of actions to perform + \tl_if_empty:NF\g_mix_btnactions_tl{/Next~[\g_mix_btnactions_tl]} + >> + } + \tl_gput_right:Nx\@anim@fields{\mix_pdflastann:\space} + \hbox_to_wd:nn{\width}{ + \vrule~width~\c_zero_dim~height~\height~depth~\depth\hss + } + \int_gincr:N\g_mix_mbtncnt_int + \cs_if_exist:NF\g_mix_dpiwarned_tl{ + \tl_new:N\g_mix_dpiwarned_tl + \AtEndDvi{\special{ps::[nobreak]\mix_dpiwarning:}} + } + } + \endL + \group_end: +} +\tl_set_eq:NN\l_mix_mediabutton_tl\mediabutton +\tl_set:Nn\mediabutton{\mix_uribegin:\l_mix_mediabutton_tl} + +\endinput +%% +%% End of file `bidi-media9.sty'. |