diff --git a/400_xowa/src/gplx/xowa/Xoa_app_.java b/400_xowa/src/gplx/xowa/Xoa_app_.java
index c5c2e6707..4cfdda974 100644
--- a/400_xowa/src/gplx/xowa/Xoa_app_.java
+++ b/400_xowa/src/gplx/xowa/Xoa_app_.java
@@ -33,7 +33,7 @@ public class Xoa_app_ {
}
public static final String Name = "xowa";
public static final int Version_id = 514;
- public static final String Version = "4.1.1.1702"; // RELEASE:2017-01-03 20:30
+ public static final String Version = "4.1.2.1702"; // RELEASE:2017-01-03 20:30
public static String Build_date = "2012-12-30 00:00:00";
public static String Build_date_fmt = "yyyy-MM-dd HH:mm:ss";
public static String Op_sys_str;
diff --git a/400_xowa/src/gplx/xowa/mws/Xomw_linker.java b/400_xowa/src/gplx/xowa/mws/Xomw_linker.java
index be6a425d2..cb76c01a3 100644
--- a/400_xowa/src/gplx/xowa/mws/Xomw_linker.java
+++ b/400_xowa/src/gplx/xowa/mws/Xomw_linker.java
@@ -21,7 +21,7 @@ import gplx.langs.htmls.*;
import gplx.xowa.mws.htmls.*; import gplx.xowa.mws.linkers.*; import gplx.xowa.mws.parsers.*;
import gplx.xowa.mws.filerepo.file.*; import gplx.xowa.mws.media.*;
import gplx.xowa.mws.parsers.lnkis.*;
-import gplx.langs.phps.utls.*;
+import gplx.xowa.mws.utls.*;
/* TODO.XO
* P8: wfMessage
* P7: titleFormatter->getPrefixedText
@@ -123,8 +123,8 @@ public class Xomw_linker {
postfix = Gfh_tag_.Div_rhs;
frame_params.align = Align__frame__none;
}
- if (file != null && handler_params.width == Xomw_param_itm.Null_int) {
- if (handler_params.height != Xomw_param_itm.Null_int && file.isVectorized()) {
+ if (file != null && handler_params.width == Php_utl_.Null_int) {
+ if (handler_params.height != Php_utl_.Null_int && file.isVectorized()) {
// If its a vector image, and user only specifies height
// we don't want it to be limited by its "normal" width.
// global $wgSVGMaxSize;
@@ -138,7 +138,7 @@ public class Xomw_linker {
|| frame_params.manual_thumb != null
|| frame_params.framed != null
|| frame_params.frameless != null
- || handler_params.width == Xomw_param_itm.Null_int
+ || handler_params.width == Php_utl_.Null_int
) {
// global $wgThumbLimits, $wgThumbUpright;
@@ -161,7 +161,7 @@ public class Xomw_linker {
// Use width which is smaller: real image width or user preference width
// Unless image is scalable vector.
- if (handler_params.height == Xomw_param_itm.Null_int && handler_params.width <= 0 ||
+ if (handler_params.height == Php_utl_.Null_int && handler_params.width <= 0 ||
pref_width < handler_params.width || file.isVectorized()) {
handler_params.width = pref_width;
}
@@ -190,13 +190,13 @@ public class Xomw_linker {
// For "frameless" option: do not present an image bigger than the
// source (for bitmap-style images). This is the same behavior as the
// "thumb" option does it already.
- if (src_width != Xomw_param_itm.Null_int && !file.mustRender() && handler_params.width > src_width) {
+ if (src_width != Php_utl_.Null_int && !file.mustRender() && handler_params.width > src_width) {
handler_params.width = src_width;
}
}
Xomw_MediaTransformOutput thumb = null;
- if (file != null && handler_params.width != Xomw_param_itm.Null_int) {
+ if (file != null && handler_params.width != Php_utl_.Null_int) {
// Create a resized image, without the additional thumbnail features
thumb = file.transform(handler_params);
}
@@ -221,7 +221,7 @@ public class Xomw_linker {
}
// $params = self::getImageLinkMTOParams(frame_params, $query, $parser) + $params;
- thumb.To_html(tmp, tmp_2, params_list);
+ thumb.toHtml(tmp, tmp_2, params_list);
s = tmp.To_bry_and_clear();
}
if (frame_params.align != Bry_.Empty) {
@@ -247,9 +247,9 @@ public class Xomw_linker {
// @return array
// XO.MW:SYNC:1.29; DATE:2017-02-03
public void Get_image_link_mto_params(Xomw_MediaTransformOutputParams mto_params, Xomw_params_frame frame_params, byte[] query, Xomw_parser parser) {
- if (Php_utl_.Is_set(frame_params.link_url) && frame_params.link_url != Bry_.Empty) {
+ if (Php_utl_.isset(frame_params.link_url) && frame_params.link_url != Bry_.Empty) {
mto_params.custom_url_link = frame_params.link_url;
- if (Php_utl_.Is_set(frame_params.link_target)) {
+ if (Php_utl_.isset(frame_params.link_target)) {
mto_params.custom_target_link = frame_params.link_target;
}
if (parser != null) {
@@ -260,7 +260,7 @@ public class Xomw_linker {
// }
}
}
- else if (Php_utl_.Is_set(frame_params.link_title) && frame_params.link_title != Bry_.Empty) {
+ else if (Php_utl_.isset(frame_params.link_title) && frame_params.link_title != Bry_.Empty) {
// mto_params.custom_title_link = Title::newFromLinkTarget(Normalize_speecial_page(frame_params.link_title));
}
else if (!Php_utl_.Empty(frame_params.no_link)) {
@@ -289,9 +289,9 @@ public class Xomw_linker {
frame_params.caption = Bry_.Empty;
}
- if (handler_params.width == Xomw_param_itm.Null_int) {
+ if (handler_params.width == Php_utl_.Null_int) {
// Reduce width for upright images when parameter 'upright' is used
- handler_params.width = frame_params.upright != Xomw_param_itm.Null_int ? 130 : 180;
+ handler_params.width = frame_params.upright != Php_utl_.Null_int ? 130 : 180;
}
boolean no_scale = false;
boolean manual_thumb = false;
@@ -318,14 +318,14 @@ public class Xomw_linker {
else if (frame_params.framed != null) {
// Use image dimensions, don't scale
// thumb = $file->getUnscaledThumb(handler_params);
- thumb = new Xomw_MediaTransformOutput(file, file.getUrl(), file.getUrl(), file.getWidth(), file.getHeight());
+ thumb = new Xomw_ThumbnailImage(file, file.getUrl(), file.getUrl(), file.getWidth(), file.getHeight());
no_scale = true;
}
else {
// Do not present an image bigger than the source, for bitmap-style images
// This is a hack to maintain compatibility with arbitrary pre-1.10 behavior
int src_width = file.getWidth(page);
- if (src_width != Xomw_param_itm.Null_int && !file.mustRender() && handler_params.width > src_width) {
+ if (src_width != Php_utl_.Null_int && !file.mustRender() && handler_params.width > src_width) {
handler_params.width = src_width;
}
// thumb = $file->transform(handler_params);
@@ -378,7 +378,7 @@ public class Xomw_linker {
mto_params.title = frame_params.title;
mto_params.img_cls = Xomw_params_frame.Cls_add(frame_params.cls, Img_class__thumbimage);
Get_image_link_mto_params(mto_params, frame_params, query, null);
- thumb.To_html(bfr, tmp, mto_params);
+ thumb.toHtml(bfr, tmp, mto_params);
if (frame_params.framed != null) {
zoom_icon = Bry_.Empty;
}
diff --git a/400_xowa/src/gplx/xowa/mws/Xomw_sanitizer.java b/400_xowa/src/gplx/xowa/mws/Xomw_sanitizer.java
index 26e6e8b97..96967d164 100644
--- a/400_xowa/src/gplx/xowa/mws/Xomw_sanitizer.java
+++ b/400_xowa/src/gplx/xowa/mws/Xomw_sanitizer.java
@@ -18,7 +18,7 @@ along with this program. If not, see .
package gplx.xowa.mws; import gplx.*; import gplx.xowa.*;
import gplx.core.brys.*; import gplx.core.btries.*; import gplx.core.encoders.*; import gplx.core.primitives.*; import gplx.langs.htmls.entitys.*;
import gplx.xowa.parsers.htmls.*;
-import gplx.langs.htmls.*; import gplx.xowa.mws.htmls.*; import gplx.xowa.mws.parsers.*; import gplx.langs.phps.utls.*;
+import gplx.langs.htmls.*; import gplx.xowa.mws.htmls.*; import gplx.xowa.mws.parsers.*; import gplx.xowa.mws.utls.*;
public class Xomw_sanitizer {
private final Mwh_doc_wkr__atr_bldr atr_bldr = new Mwh_doc_wkr__atr_bldr();
private final Mwh_atr_parser atr_parser = new Mwh_atr_parser();
diff --git a/400_xowa/src/gplx/xowa/mws/filerepo/Xomw_FileRepo.java b/400_xowa/src/gplx/xowa/mws/filerepo/Xomw_FileRepo.java
index 14391882c..671fbba5f 100644
--- a/400_xowa/src/gplx/xowa/mws/filerepo/Xomw_FileRepo.java
+++ b/400_xowa/src/gplx/xowa/mws/filerepo/Xomw_FileRepo.java
@@ -17,7 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.mws.filerepo; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*;
import gplx.xowa.mws.filerepo.file.*;
-import gplx.langs.phps.utls.*;
+import gplx.xowa.mws.utls.*;
/* TODO.XO:
* getZoneUrl
*/
diff --git a/400_xowa/src/gplx/xowa/mws/filerepo/file/Xomw_File.java b/400_xowa/src/gplx/xowa/mws/filerepo/file/Xomw_File.java
index e283fbc14..401677c19 100644
--- a/400_xowa/src/gplx/xowa/mws/filerepo/file/Xomw_File.java
+++ b/400_xowa/src/gplx/xowa/mws/filerepo/file/Xomw_File.java
@@ -17,7 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.mws.filerepo.file; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*; import gplx.xowa.mws.filerepo.*;
import gplx.xowa.mws.media.*;
-import gplx.langs.phps.utls.*;
+import gplx.xowa.mws.utls.*;
import gplx.xowa.mws.parsers.*; import gplx.xowa.mws.parsers.lnkis.*;
public class Xomw_File {
/* TODO.XO:
@@ -281,7 +281,7 @@ public class Xomw_File {
* @return String
*/
public byte[] getName() {
- if (!Php_utl_.Is_set(this.name)) {
+ if (!Php_utl_.isset(this.name)) {
// this.assertRepoDefined();
this.name = this.repo.getNameFromTitle(this.title);
}
@@ -295,7 +295,7 @@ public class Xomw_File {
* @return String
*/
private byte[] getExtension() {
- if (!Php_utl_.Is_set(this.extension)) {
+ if (!Php_utl_.isset(this.extension)) {
int n = Php_str_.Strpos(this.getName(), Byte_ascii.Dot);
this.extension = normalizeExtension(
n != Bry_find_.Not_found ? Php_str_.Substr(this.getName(), n + 1) : Bry_.Empty);
@@ -332,7 +332,7 @@ public class Xomw_File {
* @return String
*/
public byte[] getUrl() {
- if (!Php_utl_.Is_set(this.url)) {
+ if (!Php_utl_.isset(this.url)) {
// this.assertRepoDefined();
byte[] ext = this.getExtension();
this.url = Bry_.Add(this.repo.getZoneUrl(Xomw_FileRepo.Zone__public, ext), Byte_ascii.Slash_bry, this.getUrlRel());
@@ -1499,7 +1499,7 @@ public class Xomw_File {
* @return String
*/
private byte[] getHashPath() {
- if (!Php_utl_.Is_set(this.hashPath)) {
+ if (!Php_utl_.isset(this.hashPath)) {
// this.assertRepoDefined();
this.hashPath = this.repo.getHashPath(this.getName());
}
diff --git a/400_xowa/src/gplx/xowa/mws/htmls/Xomw_html_utl.java b/400_xowa/src/gplx/xowa/mws/htmls/Xomw_html_utl.java
index afd0461c6..3fae6a55c 100644
--- a/400_xowa/src/gplx/xowa/mws/htmls/Xomw_html_utl.java
+++ b/400_xowa/src/gplx/xowa/mws/htmls/Xomw_html_utl.java
@@ -17,7 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.mws.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*;
import gplx.core.btries.*;
-import gplx.langs.phps.utls.*;
+import gplx.xowa.mws.utls.*;
public class Xomw_html_utl {
private final Bry_bfr tmp = Bry_bfr_.New();
private final Btrie_rv trv = new Btrie_rv();
diff --git a/400_xowa/src/gplx/xowa/mws/media/Xomw_ImageHandler.java b/400_xowa/src/gplx/xowa/mws/media/Xomw_ImageHandler.java
index 95a53eb58..8083c1abd 100644
--- a/400_xowa/src/gplx/xowa/mws/media/Xomw_ImageHandler.java
+++ b/400_xowa/src/gplx/xowa/mws/media/Xomw_ImageHandler.java
@@ -17,7 +17,13 @@ along with this program. If not, see .
*/
package gplx.xowa.mws.media; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*;
import gplx.xowa.mws.filerepo.file.*; import gplx.xowa.mws.parsers.lnkis.*;
-import gplx.langs.phps.utls.*;
+import gplx.xowa.mws.utls.*;
+/* XO.TODO:
+ * parseParamString
+ * fitBoxWidth
+ * scaleHeight
+ * validateThumbParams
+*/
// MEMORY:only one instance per wiki
public abstract class Xomw_ImageHandler extends Xomw_MediaHandler { private final Xomw_param_map paramMap = new Xomw_param_map();
public Xomw_ImageHandler(byte[] key) {super(key);
@@ -28,10 +34,11 @@ public abstract class Xomw_ImageHandler extends Xomw_MediaHandler { private fina
* @return boolean
*/
@Override public boolean canRender(Xomw_File file) {
- return (file.getWidth(1) != Xomw_param_itm.Null_int && file.getHeight(1) != Xomw_param_itm.Null_int);
+ return (Php_utl_.istrue(file.getWidth()) && Php_utl_.istrue(file.getHeight()));
}
@Override public Xomw_param_map getParamMap() {
+ // XO.MW: defined above: "return [ 'img_width' => 'width' ];"
return paramMap;
}
@@ -51,10 +58,10 @@ public abstract class Xomw_ImageHandler extends Xomw_MediaHandler { private fina
@Override public byte[] makeParamString(Xomw_params_handler handlerParams) {
int width = 0;
- if (handlerParams.physicalWidth != Xomw_param_itm.Null_int) {
+ if (Php_utl_.isset(handlerParams.physicalWidth)) {
width = handlerParams.physicalWidth;
}
- else if (handlerParams.width != Xomw_param_itm.Null_int) {
+ else if (Php_utl_.isset(handlerParams.width)) {
width = handlerParams.width;
}
else {
@@ -74,7 +81,7 @@ public abstract class Xomw_ImageHandler extends Xomw_MediaHandler { private fina
// return false;
// }
// }
-//
+
// function getScriptParams(paramsVar) {
// return [ 'width' => paramsVar['width'] ];
// }
@@ -122,7 +129,7 @@ public abstract class Xomw_ImageHandler extends Xomw_MediaHandler { private fina
handlerParams.physicalWidth = handlerParams.width;
} else {
// Height was crap, unset it so that it will be calculated later
- handlerParams.height = Xomw_param_itm.Null_int;
+ handlerParams.height = Php_utl_.Null_int;
}
}
diff --git a/400_xowa/src/gplx/xowa/mws/media/Xomw_MediaTransformOutput.java b/400_xowa/src/gplx/xowa/mws/media/Xomw_MediaTransformOutput.java
index 06a8259e4..ea03b5840 100644
--- a/400_xowa/src/gplx/xowa/mws/media/Xomw_MediaTransformOutput.java
+++ b/400_xowa/src/gplx/xowa/mws/media/Xomw_MediaTransformOutput.java
@@ -17,19 +17,45 @@ along with this program. If not, see .
*/
package gplx.xowa.mws.media; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*;
import gplx.langs.htmls.*;
-import gplx.langs.phps.utls.*;
+import gplx.xowa.mws.utls.*;
import gplx.xowa.mws.filerepo.file.*;
-public class Xomw_MediaTransformOutput {
-// private final Xomw_File file;
- private final byte[] url;
- private final int width, height;
- private final List_adp attribs = List_adp_.New(), link_attribs = List_adp_.New();
+public abstract class Xomw_MediaTransformOutput {
public Xomw_MediaTransformOutput(Xomw_File file, byte[] url, byte[] path, int width, int height) {
// this.file = file;
this.url = url;
this.width = width;
this.height = height;
}
+// /** @var array Associative array mapping optional supplementary image files
+// * from pixel density (eg 1.5 or 2) to additional URLs.
+// */
+// public $responsiveUrls = [];
+//
+// /** @var File */
+// private final Xomw_File file;
+
+ /** @var int Image width */
+ protected final int width;
+
+ /** @var int Image height */
+ protected final int height;
+
+ /** @var String URL path to the thumb */
+ protected final byte[] url;
+
+// /** @var boolean|String */
+// protected $page;
+//
+// /** @var boolean|String Filesystem path to the thumb */
+// protected $path;
+//
+// /** @var boolean|String Language code, false if not set */
+// protected $lang;
+//
+// /** @var boolean|String Permanent storage path */
+// protected $storagePath = false;
+
+
/**
* @return int Width of the output box
*/
@@ -44,114 +70,207 @@ public class Xomw_MediaTransformOutput {
return this.height;
}
- // Return HTML tag for the thumbnail, will include
- // width and height attributes and a blank alt text (as required).
- //
- // @param array options Associative array of options. Boolean options
- // should be indicated with a value of true for true, and false or
- // absent for false.
- //
- // alt HTML alt attribute
- // title HTML title attribute
- // desc-link Boolean, show a description link
- // file-link Boolean, show a file download link
- // valign vertical-align property, if the output is an inline element
- // img-class Class applied to the \ tag, if there is such a tag
- // desc-query String, description link query params
- // override-width Override width attribute. Should generally not set
- // override-height Override height attribute. Should generally not set
- // no-dimensions Boolean, skip width and height attributes (useful if
- // set in CSS)
- // custom-url-link Custom URL to link to
- // custom-title-link Custom Title Object to link to
- // custom target-link Value of the target attribute, for custom-target-link
- // parser-extlink-* Attributes added by parser for external links:
- // parser-extlink-rel: add rel="nofollow"
- // parser-extlink-target: link target, but overridden by custom-target-link
- //
- // For images, desc-link and file-link are implemented as a click-through. For
- // sounds and videos, they may be displayed in other ways.
- // XO.MW:SYNC:1.29; DATE:2017-02-03
- public void To_html(Bry_bfr bfr, Bry_bfr tmp, Xomw_MediaTransformOutputParams options) {
- byte[] alt = options.alt;
-
-// byte[] query = options.desc_query;
-
- attribs.Clear();
- attribs.Add_many(Gfh_atr_.Bry__alt, alt);
- attribs.Add_many(Gfh_atr_.Bry__src, url);
- boolean link_attribs_is_null = false;
- if (!Php_utl_.Empty(options.custom_url_link)) {
- link_attribs.Clear();
- link_attribs.Add_many(Gfh_atr_.Bry__href, options.custom_url_link);
- if (!Php_utl_.Empty(options.title)) {
- link_attribs.Add_many(Gfh_atr_.Bry__title, options.title);
- }
- if (Php_utl_.Empty(options.custom_target_link)) {
- link_attribs.Add_many(Gfh_atr_.Bry__target, options.custom_target_link);
- }
- else if (Php_utl_.Empty(options.parser_extlink_target)) {
- link_attribs.Add_many(Gfh_atr_.Bry__target, options.parser_extlink_target);
- }
- if (Php_utl_.Empty(options.parser_extlink_rel)) {
- link_attribs.Add_many(Gfh_atr_.Bry__rel, options.parser_extlink_rel);
- }
- }
- else if (!Php_utl_.Empty(options.custom_title_link)) {
-// byte[] title = options.custom_title_link;
-// link_attribs.Clear();
-// link_attribs.Add_many(Gfh_atr_.Bry__href, title.Get_link_url());
-// byte[] options_title = options.title;
-// link_attribs.Add_many(Gfh_atr_.Bry__title, Php_utl_.Empty(options_title) ? title.Get_full_text() : options_title);
- }
- else if (!Php_utl_.Empty(options.desc_link)) {
-// link_attribs = this.getDescLinkAttribs(
-// empty(options['title']) ? null : options['title'],
-// $query
-// );
- }
- else if (!Php_utl_.Empty(options.file_link)) {
-// link_attribs.Clear();
-// link_attribs.Add_many(Gfh_atr_.Bry__href, file.Get_url());
- }
- else {
- link_attribs_is_null = true;
- if (!Php_utl_.Empty(options.title)) {
- attribs.Add_many(Gfh_atr_.Bry__title, options.title);
- }
- }
+// /**
+// * @return File
+// */
+// public function getFile() {
+// return $this->file;
+// }
+//
+// /**
+// * Get the final extension of the thumbnail.
+// * Returns false for scripted transformations.
+// * @return String|boolean
+// */
+// public function getExtension() {
+// return $this->path ? FileBackend::extensionFromPath( $this->path ) : false;
+// }
+//
+// /**
+// * @return String|boolean The thumbnail URL
+// */
+// public function getUrl() {
+// return $this->url;
+// }
+//
+// /**
+// * @return String|boolean The permanent thumbnail storage path
+// */
+// public function getStoragePath() {
+// return $this->storagePath;
+// }
+//
+// /**
+// * @param String $storagePath The permanent storage path
+// * @return void
+// */
+// public function setStoragePath( $storagePath ) {
+// $this->storagePath = $storagePath;
+// if ( $this->path === false ) {
+// $this->path = $storagePath;
+// }
+// }
- if (!Php_utl_.Empty(options.no_dimensions)) {
- attribs.Add_many(Gfh_atr_.Bry__width, Int_.To_bry(width));
- attribs.Add_many(Gfh_atr_.Bry__height, Int_.To_bry(height));
- }
- if (!Php_utl_.Empty(options.valign)) {
- attribs.Add_many(Gfh_atr_.Bry__style, Bry_.Add(Bry__vertical_align, options.valign));
- }
- if (!Php_utl_.Empty(options.img_cls)) {
- attribs.Add_many(Gfh_atr_.Bry__class, options.img_cls);
- }
- if (Php_utl_.Is_set(options.override_height)) {
- attribs.Add_many(Gfh_atr_.Bry__class, options.override_height);
- }
- if (Php_utl_.Is_set(options.override_width)) {
- attribs.Add_many(Gfh_atr_.Bry__width, options.override_height);
- }
+ /**
+ * Fetch HTML for this transform output
+ *
+ * @param array $options Associative array of options. Boolean options
+ * should be indicated with a value of true for true, and false or
+ * absent for false.
+ *
+ * alt Alternate text or caption
+ * desc-link Boolean, show a description link
+ * file-link Boolean, show a file download link
+ * custom-url-link Custom URL to link to
+ * custom-title-link Custom Title Object to link to
+ * valign vertical-align property, if the output is an inline element
+ * img-class Class applied to the "" tag, if there is such a tag
+ *
+ * For images, desc-link and file-link are implemented as a click-through. For
+ * sounds and videos, they may be displayed in other ways.
+ *
+ * @return String
+ */
+ public abstract void toHtml(Bry_bfr bfr, Bry_bfr tmp, Xomw_MediaTransformOutputParams options);
- // Additional densities for responsive images, if specified.
- // If any of these urls is the same as src url, it'll be excluded.
-// $responsiveUrls = array_diff(this.responsiveUrls, [ this.url ]);
-// if (!Php_utl_.Empty($responsiveUrls)) {
-// $attribs['srcset'] = Html::srcSet($responsiveUrls);
+// /**
+// * This will be overridden to return true in error classes
+// * @return boolean
+// */
+// public function isError() {
+// return false;
+// }
+//
+// /**
+// * Check if an output thumbnail file actually exists.
+// *
+// * This will return false if there was an error, the
+// * thumbnail is to be handled client-side only, or if
+// * transformation was deferred via TRANSFORM_LATER.
+// * This file may exist as a new file in /tmp, a file
+// * in permanent storage, or even refer to the original.
+// *
+// * @return boolean
+// */
+// public function hasFile() {
+// // If TRANSFORM_LATER, $this->path will be false.
+// // Note: a null path means "use the source file".
+// return ( !$this->isError() && ( $this->path || $this->path === null ) );
+// }
+//
+// /**
+// * Check if the output thumbnail is the same as the source.
+// * This can occur if the requested width was bigger than the source.
+// *
+// * @return boolean
+// */
+// public function fileIsSource() {
+// return ( !$this->isError() && $this->path === null );
+// }
+//
+// /**
+// * Get the path of a file system copy of the thumbnail.
+// * Callers should never write to this path.
+// *
+// * @return String|boolean Returns false if there isn't one
+// */
+// public function getLocalCopyPath() {
+// if ( $this->isError() ) {
+// return false;
+// } elseif ( $this->path === null ) {
+// return $this->file->getLocalRefPath(); // assume thumb was not scaled
+// } elseif ( FileBackend::isStoragePath( $this->path ) ) {
+// $be = $this->file->getRepo()->getBackend();
+// // The temp file will be process cached by FileBackend
+// $fsFile = $be->getLocalReference( [ 'src' => $this->path ] );
+//
+// return $fsFile ? $fsFile->getPath() : false;
+// } else {
+// return $this->path; // may return false
// }
+// }
+//
+// /**
+// * Stream the file if there were no errors
+// *
+// * @param array $headers Additional HTTP headers to send on success
+// * @return Status
+// * @since 1.27
+// */
+// public function streamFileWithStatus( $headers = [] ) {
+// if ( !$this->path ) {
+// return Status::newFatal( 'backend-fail-stream', '' );
+// } elseif ( FileBackend::isStoragePath( $this->path ) ) {
+// $be = $this->file->getRepo()->getBackend();
+// return $be->streamFile( [ 'src' => $this->path, 'headers' => $headers ] );
+// } else { // FS-file
+// $success = StreamFile::stream( $this->getLocalCopyPath(), $headers );
+// return $success ? Status::newGood() : Status::newFatal( 'backend-fail-stream', $this->path );
+// }
+// }
+//
+// /**
+// * Stream the file if there were no errors
+// *
+// * @deprecated since 1.26, use streamFileWithStatus
+// * @param array $headers Additional HTTP headers to send on success
+// * @return boolean Success
+// */
+// public function streamFile( $headers = [] ) {
+// $this->streamFileWithStatus( $headers )->isOK();
+// }
+//
+// /**
+// * Wrap some XHTML text in an anchor tag with the given attributes
+// *
+// * @param array $linkAttribs
+// * @param String $contents
+// * @return String
+// */
+// protected function linkWrap( $linkAttribs, $contents ) {
+// if ( $linkAttribs ) {
+// return Xml::tags( 'a', $linkAttribs, $contents );
+// } else {
+// return $contents;
+// }
+// }
+//
+// /**
+// * @param String $title
+// * @param String|array $params Query parameters to add
+// * @return array
+// */
+// public function getDescLinkAttribs( $title = null, $params = [] ) {
+// if ( is_array( $params ) ) {
+// $query = $params;
+// } else {
+// $query = [];
+// }
+// if ( $this->page && $this->page !== 1 ) {
+// $query['page'] = $this->page;
+// }
+// if ( $this->lang ) {
+// $query['lang'] = $this->lang;
+// }
+//
+// if ( is_string( $params ) && $params !== '' ) {
+// $query = $params . '&' . wfArrayToCgi( $query );
+// }
+//
+// $attribs = [
+// 'href' => $this->file->getTitle()->getLocalURL( $query ),
+// 'class' => 'image',
+// ];
+// if ( $title ) {
+// $attribs['title'] = $title;
+// }
+//
+// return $attribs;
+// }
- // XO.MW.HOOK:ThumbnailBeforeProduceHTML
- Xomw_xml.Element(tmp, Gfh_tag_.Bry__img, attribs, Bry_.Empty, Bool_.Y);
- Link_wrap(bfr, link_attribs_is_null ? null : link_attribs, tmp.To_bry_and_clear());
- }
// Wrap some XHTML text in an anchor tag with the given attributes
// XO.MW:SYNC:1.29; DATE:2017-02-03
- private void Link_wrap(Bry_bfr bfr, List_adp link_attribs, byte[] contents) {
+ protected void Link_wrap(Bry_bfr bfr, List_adp link_attribs, byte[] contents) {
if (link_attribs != null) {
Xomw_xml.Tags(bfr, Gfh_tag_.Bry__a, link_attribs, contents);
}
@@ -159,5 +278,4 @@ public class Xomw_MediaTransformOutput {
bfr.Add(contents);
}
}
- private static final byte[] Bry__vertical_align = Bry_.new_a7("vertical-align: ");
}
diff --git a/400_xowa/src/gplx/xowa/mws/media/Xomw_ThumbnailImage.java b/400_xowa/src/gplx/xowa/mws/media/Xomw_ThumbnailImage.java
index 0d0d1211f..af030b721 100644
--- a/400_xowa/src/gplx/xowa/mws/media/Xomw_ThumbnailImage.java
+++ b/400_xowa/src/gplx/xowa/mws/media/Xomw_ThumbnailImage.java
@@ -16,10 +16,15 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.mws.media; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*;
+import gplx.langs.htmls.*;
+import gplx.xowa.mws.utls.*;
import gplx.xowa.mws.parsers.lnkis.*;
import gplx.xowa.mws.filerepo.file.*;
// Media transform output for images
-public class Xomw_ThumbnailImage extends Xomw_MediaTransformOutput { /**
+public class Xomw_ThumbnailImage extends Xomw_MediaTransformOutput { private final List_adp attribs = List_adp_.New(), link_attribs = List_adp_.New();
+ public Xomw_ThumbnailImage(Xomw_File file, byte[] url, byte[] path, int w, int h) {super(file, url, path, w, h);
+ }
+ /**
* Get a thumbnail Object from a file and parameters.
* If path is set to null, the output file is treated as a source copy.
* If path is set to false, no output file will be created.
@@ -78,7 +83,7 @@ public class Xomw_ThumbnailImage extends Xomw_MediaTransformOutput { /**
* file-link Boolean, show a file download link
* valign vertical-align property, if the output is an inline element
* img-class Class applied to the \ tag, if there is such a tag
- * desc-query String, description link query
+ * desc-query String, description link query prms
* @Override width Override width attribute. Should generally not set
* @Override height Override height attribute. Should generally not set
* no-dimensions Boolean, skip width and height attributes (useful if
@@ -96,80 +101,110 @@ public class Xomw_ThumbnailImage extends Xomw_MediaTransformOutput { /**
* @throws MWException
* @return String
*/
-// function toHtml(options = ...) {
-// if (count(func_get_args()) == 2) {
-// throw new MWException(__METHOD__ . ' called in the old style');
-// }
-//
-// alt = isset(options['alt']) ? options['alt'] : '';
-//
-// query = isset(options['desc-query']) ? options['desc-query'] : '';
-//
-// attribs = [
-// 'alt' => alt,
-// 'src' => this->url,
-// ];
-//
-// if (!empty(options['custom-url-link'])) {
-// linkAttribs = [ 'href' => options['custom-url-link'] ];
-// if (!empty(options['title'])) {
-// linkAttribs['title'] = options['title'];
-// }
-// if (!empty(options['custom-target-link'])) {
-// linkAttribs['target'] = options['custom-target-link'];
-// } elseif (!empty(options['parser-extlink-target'])) {
-// linkAttribs['target'] = options['parser-extlink-target'];
-// }
-// if (!empty(options['parser-extlink-rel'])) {
-// linkAttribs['rel'] = options['parser-extlink-rel'];
-// }
-// } elseif (!empty(options['custom-title-link'])) {
-// /** @var Title title */
-// title = options['custom-title-link'];
-// linkAttribs = [
-// 'href' => title->getLinkURL(),
-// 'title' => empty(options['title']) ? title->getFullText() : options['title']
-// ];
-// } elseif (!empty(options['desc-link'])) {
-// linkAttribs = this->getDescLinkAttribs(
+ // Return HTML tag for the thumbnail, will include
+ // width and height attributes and a blank alt text (as required).
+ //
+ // @param array options Associative array of options. Boolean options
+ // should be indicated with a value of true for true, and false or
+ // absent for false.
+ //
+ // alt HTML alt attribute
+ // title HTML title attribute
+ // desc-link Boolean, show a description link
+ // file-link Boolean, show a file download link
+ // valign vertical-align property, if the output is an inline element
+ // img-class Class applied to the \ tag, if there is such a tag
+ // desc-query String, description link query prms
+ // override-width Override width attribute. Should generally not set
+ // override-height Override height attribute. Should generally not set
+ // no-dimensions Boolean, skip width and height attributes (useful if
+ // set in CSS)
+ // custom-url-link Custom URL to link to
+ // custom-title-link Custom Title Object to link to
+ // custom target-link Value of the target attribute, for custom-target-link
+ // parser-extlink-* Attributes added by parser for external links:
+ // parser-extlink-rel: add rel="nofollow"
+ // parser-extlink-target: link target, but overridden by custom-target-link
+ //
+ // For images, desc-link and file-link are implemented as a click-through. For
+ // sounds and videos, they may be displayed in other ways.
+ // XO.MW:SYNC:1.29; DATE:2017-02-03
+ @Override public void toHtml(Bry_bfr bfr, Bry_bfr tmp, Xomw_MediaTransformOutputParams options) {
+ byte[] alt = options.alt;
+
+// byte[] query = options.desc_query;
+
+ attribs.Clear();
+ attribs.Add_many(Gfh_atr_.Bry__alt, alt);
+ attribs.Add_many(Gfh_atr_.Bry__src, url);
+ boolean link_attribs_is_null = false;
+ if (!Php_utl_.Empty(options.custom_url_link)) {
+ link_attribs.Clear();
+ link_attribs.Add_many(Gfh_atr_.Bry__href, options.custom_url_link);
+ if (!Php_utl_.Empty(options.title)) {
+ link_attribs.Add_many(Gfh_atr_.Bry__title, options.title);
+ }
+ if (Php_utl_.Empty(options.custom_target_link)) {
+ link_attribs.Add_many(Gfh_atr_.Bry__target, options.custom_target_link);
+ }
+ else if (Php_utl_.Empty(options.parser_extlink_target)) {
+ link_attribs.Add_many(Gfh_atr_.Bry__target, options.parser_extlink_target);
+ }
+ if (Php_utl_.Empty(options.parser_extlink_rel)) {
+ link_attribs.Add_many(Gfh_atr_.Bry__rel, options.parser_extlink_rel);
+ }
+ }
+ else if (!Php_utl_.Empty(options.custom_title_link)) {
+// byte[] title = options.custom_title_link;
+// link_attribs.Clear();
+// link_attribs.Add_many(Gfh_atr_.Bry__href, title.Get_link_url());
+// byte[] options_title = options.title;
+// link_attribs.Add_many(Gfh_atr_.Bry__title, Php_utl_.Empty(options_title) ? title.Get_full_text() : options_title);
+ }
+ else if (!Php_utl_.Empty(options.desc_link)) {
+// link_attribs = this.getDescLinkAttribs(
// empty(options['title']) ? null : options['title'],
-// query
+// $query
// );
-// } elseif (!empty(options['file-link'])) {
-// linkAttribs = [ 'href' => this->file->getUrl() ];
-// } else {
-// linkAttribs = false;
-// if (!empty(options['title'])) {
-// attribs['title'] = options['title'];
-// }
-// }
-//
-// if (empty(options['no-dimensions'])) {
-// attribs['width'] = this->width;
-// attribs['height'] = this->height;
-// }
-// if (!empty(options['valign'])) {
-// attribs['style'] = "vertical-align: {options['valign']}";
-// }
-// if (!empty(options['img-class'])) {
-// attribs['class'] = options['img-class'];
-// }
-// if (isset(options['override-height'])) {
-// attribs['height'] = options['override-height'];
-// }
-// if (isset(options['override-width'])) {
-// attribs['width'] = options['override-width'];
-// }
-//
-// // Additional densities for responsive images, if specified.
-// // If any of these urls is the same as src url, it'll be excluded.
-// responsiveUrls = array_diff(this->responsiveUrls, [ this->url ]);
-// if (!empty(responsiveUrls)) {
-// attribs['srcset'] = Html::srcSet(responsiveUrls);
+ }
+ else if (!Php_utl_.Empty(options.file_link)) {
+// link_attribs.Clear();
+// link_attribs.Add_many(Gfh_atr_.Bry__href, file.Get_url());
+ }
+ else {
+ link_attribs_is_null = true;
+ if (!Php_utl_.Empty(options.title)) {
+ attribs.Add_many(Gfh_atr_.Bry__title, options.title);
+ }
+ }
+
+ if (!Php_utl_.Empty(options.no_dimensions)) {
+ attribs.Add_many(Gfh_atr_.Bry__width, Int_.To_bry(width));
+ attribs.Add_many(Gfh_atr_.Bry__height, Int_.To_bry(height));
+ }
+ if (!Php_utl_.Empty(options.valign)) {
+ attribs.Add_many(Gfh_atr_.Bry__style, Bry_.Add(Bry__vertical_align, options.valign));
+ }
+ if (!Php_utl_.Empty(options.img_cls)) {
+ attribs.Add_many(Gfh_atr_.Bry__class, options.img_cls);
+ }
+ if (Php_utl_.isset(options.override_height)) {
+ attribs.Add_many(Gfh_atr_.Bry__class, options.override_height);
+ }
+ if (Php_utl_.isset(options.override_width)) {
+ attribs.Add_many(Gfh_atr_.Bry__width, options.override_height);
+ }
+
+ // Additional densities for responsive images, if specified.
+ // If any of these urls is the same as src url, it'll be excluded.
+// $responsiveUrls = array_diff(this.responsiveUrls, [ this.url ]);
+// if (!Php_utl_.Empty($responsiveUrls)) {
+// $attribs['srcset'] = Html::srcSet($responsiveUrls);
// }
-//
-// Hooks::run('ThumbnailBeforeProduceHTML', [ this, &attribs, &linkAttribs ]);
-//
-// return this->linkWrap(linkAttribs, Xml::element('img', attribs));
-// }
+
+ // XO.MW.HOOK:ThumbnailBeforeProduceHTML
+ Xomw_xml.Element(tmp, Gfh_tag_.Bry__img, attribs, Bry_.Empty, Bool_.Y);
+ Link_wrap(bfr, link_attribs_is_null ? null : link_attribs, tmp.To_bry_and_clear());
+ }
+ private static final byte[] Bry__vertical_align = Bry_.new_a7("vertical-align: ");
}
diff --git a/400_xowa/src/gplx/xowa/mws/media/Xomw_TransformationalImageHandler.java b/400_xowa/src/gplx/xowa/mws/media/Xomw_TransformationalImageHandler.java
index 29a3fa708..88cff7df1 100644
--- a/400_xowa/src/gplx/xowa/mws/media/Xomw_TransformationalImageHandler.java
+++ b/400_xowa/src/gplx/xowa/mws/media/Xomw_TransformationalImageHandler.java
@@ -28,19 +28,19 @@ public class Xomw_TransformationalImageHandler extends Xomw_ImageHandler { publi
* 'physicalWidth' and 'physicalHeight' indicate the thumbnail dimensions.
* @return boolean
*/
- @Override public boolean normaliseParams(Xomw_File image, Xomw_params_handler handlerParams) {
- if (!super.normaliseParams(image, handlerParams)) {
+ @Override public boolean normaliseParams(Xomw_File image, Xomw_params_handler prms) {
+ if (!super.normaliseParams(image, prms)) {
return false;
}
// Obtain the source, pre-rotation dimensions
- int srcWidth = image.getWidth(handlerParams.page);
- int srcHeight = image.getHeight(handlerParams.page);
+ int srcWidth = image.getWidth(prms.page);
+ int srcHeight = image.getHeight(prms.page);
// Don't make an image bigger than the source
- if (handlerParams.physicalWidth >= srcWidth) {
- handlerParams.physicalWidth = srcWidth;
- handlerParams.physicalHeight = srcHeight;
+ if (prms.physicalWidth >= srcWidth) {
+ prms.physicalWidth = srcWidth;
+ prms.physicalHeight = srcHeight;
// Skip scaling limit checks if no scaling is required
// due to requested size being bigger than source.
@@ -90,7 +90,7 @@ public class Xomw_TransformationalImageHandler extends Xomw_ImageHandler { publi
* @param int flags
* @return MediaTransformError|ThumbnailImage|TransformParameterError
*/
- @Override public Xomw_MediaTransformOutput doTransform(Xomw_File image, byte[] dstPath, byte[] dstUrl, Xomw_params_handler handlerParams, int flags) {
+ @Override public Xomw_MediaTransformOutput doTransform(Xomw_File image, byte[] dstPath, byte[] dstUrl, Xomw_params_handler prms, int flags) {
// if (!this.normaliseParams(image, paramsVar)) {
// return new TransformParameterError(paramsVar);
// }
@@ -98,12 +98,12 @@ public class Xomw_TransformationalImageHandler extends Xomw_ImageHandler { publi
// // Create a parameter array to pass to the scaler
Xomw_params_scalar scalerParams = new Xomw_params_scalar();
// // The size to which the image will be resized
- scalerParams.physicalWidth = handlerParams.physicalWidth;
- scalerParams.physicalHeight = handlerParams.physicalHeight;
+ scalerParams.physicalWidth = prms.physicalWidth;
+ scalerParams.physicalHeight = prms.physicalHeight;
// 'physicalDimensions' => "{paramsVar['physicalWidth']}x{paramsVar['physicalHeight']}",
// The size of the image on the page
- scalerParams.clientWidth = handlerParams.width;
- scalerParams.clientHeight = handlerParams.height;
+ scalerParams.clientWidth = prms.width;
+ scalerParams.clientHeight = prms.height;
// Comment as will be added to the Exif of the thumbnail
// 'comment' => isset(paramsVar['descriptionUrl'])
// ? "File source: {paramsVar['descriptionUrl']}"
@@ -173,7 +173,7 @@ public class Xomw_TransformationalImageHandler extends Xomw_ImageHandler { publi
// newParams['page'] = paramsVar['page'];
// }
// return new Xomw_ThumbnailImage(image, dstUrl, null, newParams);
- return new Xomw_ThumbnailImage(image, dstUrl, null, handlerParams);
+ return new Xomw_ThumbnailImage(image, dstUrl, null, prms);
// }
//
// // Try to make a target path for the thumbnail
@@ -319,11 +319,11 @@ public class Xomw_TransformationalImageHandler extends Xomw_ImageHandler { publi
* @todo FIXME: No rotation support
*/
private Xomw_ThumbnailImage getClientScalingThumbnailImage(Xomw_File image, Xomw_params_scalar scalerParams) {
- Xomw_params_handler handler_params = new Xomw_params_handler();
- handler_params.width = scalerParams.clientWidth;
- handler_params.height = scalerParams.clientHeight;
+ Xomw_params_handler prms = new Xomw_params_handler();
+ prms.width = scalerParams.clientWidth;
+ prms.height = scalerParams.clientHeight;
- return new Xomw_ThumbnailImage(image, image.getUrl(), image.getPath(), handler_params);
+ return new Xomw_ThumbnailImage(image, image.getUrl(), null, prms);
}
// /**
diff --git a/400_xowa/src/gplx/xowa/mws/parsers/Xomw_block_level_pass.java b/400_xowa/src/gplx/xowa/mws/parsers/Xomw_block_level_pass.java
index 186a8bb7a..a34592cf9 100644
--- a/400_xowa/src/gplx/xowa/mws/parsers/Xomw_block_level_pass.java
+++ b/400_xowa/src/gplx/xowa/mws/parsers/Xomw_block_level_pass.java
@@ -18,7 +18,7 @@ along with this program. If not, see .
package gplx.xowa.mws.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*;
import gplx.core.btries.*;
import gplx.langs.htmls.*;
-import gplx.langs.phps.utls.*;
+import gplx.xowa.mws.utls.*;
public class Xomw_block_level_pass {
private final Bry_bfr tmp = Bry_bfr_.New();
private final Btrie_rv trv = new Btrie_rv();
diff --git a/400_xowa/src/gplx/xowa/mws/parsers/hrs/Xomw_hr_wkr.java b/400_xowa/src/gplx/xowa/mws/parsers/hrs/Xomw_hr_wkr.java
index b19fef885..4d2259a44 100644
--- a/400_xowa/src/gplx/xowa/mws/parsers/hrs/Xomw_hr_wkr.java
+++ b/400_xowa/src/gplx/xowa/mws/parsers/hrs/Xomw_hr_wkr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.mws.parsers.hrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*; import gplx.xowa.mws.parsers.*;
-import gplx.langs.phps.utls.*;
+import gplx.xowa.mws.utls.*;
public class Xomw_hr_wkr {// THREAD.UNSAFE: caching for repeated calls
private Bry_bfr bfr;
public void Replace_hrs(Xomw_parser_ctx pctx, Xomw_parser_bfr pbfr) { // REF.MW: text = preg_replace('/(^|\n)-----*/', '\\1
', text);
diff --git a/400_xowa/src/gplx/xowa/mws/parsers/lnkes/Xomw_lnke_wkr.java b/400_xowa/src/gplx/xowa/mws/parsers/lnkes/Xomw_lnke_wkr.java
index 8f3424ee8..1e7e58a75 100644
--- a/400_xowa/src/gplx/xowa/mws/parsers/lnkes/Xomw_lnke_wkr.java
+++ b/400_xowa/src/gplx/xowa/mws/parsers/lnkes/Xomw_lnke_wkr.java
@@ -17,7 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.mws.parsers.lnkes; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*; import gplx.xowa.mws.parsers.*;
import gplx.core.btries.*; import gplx.core.primitives.*;
-import gplx.langs.phps.utls.*;
+import gplx.xowa.mws.utls.*;
import gplx.xowa.mws.htmls.*;
/* TODO.XO
* P3: $langObj->formatNum( ++$this->mAutonumber );
diff --git a/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_lnki_wkr.java b/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_lnki_wkr.java
index 84196a699..2626a02aa 100644
--- a/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_lnki_wkr.java
+++ b/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_lnki_wkr.java
@@ -17,11 +17,11 @@ along with this program. If not, see .
*/
package gplx.xowa.mws.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*; import gplx.xowa.mws.parsers.*;
import gplx.core.btries.*; import gplx.core.primitives.*;
-import gplx.langs.phps.utls.*;
+import gplx.xowa.mws.utls.*;
import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.xwikis.*;
import gplx.xowa.mws.parsers.*; import gplx.xowa.mws.parsers.quotes.*;
import gplx.xowa.mws.htmls.*; import gplx.xowa.mws.linkers.*;
-import gplx.xowa.mws.utls.*; import gplx.xowa.mws.libs.*;
+import gplx.xowa.mws.libs.*;
import gplx.xowa.mws.media.*; import gplx.xowa.mws.filerepo.file.*;
import gplx.xowa.parsers.uniqs.*;
/* TODO.XO
@@ -743,7 +743,7 @@ public class Xomw_lnki_wkr {// THREAD.UNSAFE: caching for repeated calls
// Parsed a width param of imagelink like 300px or 200x300px
// XO.MW.NOTE: for MW, "" -> null, null while "AxB" -> 0x0
public void parseWidthParam(int[] img_size, byte[] src) {
- img_size[0] = img_size[1] = Xomw_param_itm.Null_int;
+ img_size[0] = img_size[1] = Php_utl_.Null_int;
if (src == Bry_.Empty) {
return;
}
diff --git a/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_param_itm.java b/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_param_itm.java
index d3ddd5314..7e9fb8e1d 100644
--- a/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_param_itm.java
+++ b/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_param_itm.java
@@ -54,6 +54,4 @@ public class Xomw_param_itm {
public static final byte[]
Name_bry__width = Bry_.new_a7("width")
;
-
- public static final int Null_int = Int_.Max_value;
}
diff --git a/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_params_handler.java b/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_params_handler.java
index 6ed69aa5a..d97ce008a 100644
--- a/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_params_handler.java
+++ b/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_params_handler.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.mws.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*; import gplx.xowa.mws.parsers.*;
+import gplx.xowa.mws.utls.*;
public class Xomw_params_handler {
public int width;
public int height;
@@ -24,7 +25,7 @@ public class Xomw_params_handler {
public int physicalHeight;
public Xomw_params_handler Clear() {
width = height = page
- = physicalWidth = physicalHeight = Xomw_param_itm.Null_int;
+ = physicalWidth = physicalHeight = Php_utl_.Null_int;
return this;
}
public void Copy_to(Xomw_params_handler src) {
diff --git a/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_params_scalar.java b/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_params_scalar.java
index 92006c19d..8509a1bf7 100644
--- a/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_params_scalar.java
+++ b/400_xowa/src/gplx/xowa/mws/parsers/lnkis/Xomw_params_scalar.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.mws.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*; import gplx.xowa.mws.parsers.*;
+import gplx.xowa.mws.utls.*;
public class Xomw_params_scalar {
public int physicalWidth;
public int physicalHeight;
@@ -30,6 +31,6 @@ public class Xomw_params_scalar {
public byte[] dstUrl;
public byte[] interlace;
public Xomw_params_scalar() {
- physicalWidth = physicalHeight = clientWidth = clientHeight = srcWidth = srcHeight = Xomw_param_itm.Null_int;
+ physicalWidth = physicalHeight = clientWidth = clientHeight = srcWidth = srcHeight = Php_utl_.Null_int;
}
}
diff --git a/400_xowa/src/gplx/xowa/mws/parsers/magiclinks/Xomw_magiclinks_wkr.java b/400_xowa/src/gplx/xowa/mws/parsers/magiclinks/Xomw_magiclinks_wkr.java
index bf3612bcc..a2fbdd280 100644
--- a/400_xowa/src/gplx/xowa/mws/parsers/magiclinks/Xomw_magiclinks_wkr.java
+++ b/400_xowa/src/gplx/xowa/mws/parsers/magiclinks/Xomw_magiclinks_wkr.java
@@ -17,7 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.mws.parsers.magiclinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*; import gplx.xowa.mws.parsers.*;
import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.core.net.*;
-import gplx.langs.phps.utls.*; import gplx.xowa.mws.htmls.*;
+import gplx.xowa.mws.utls.*; import gplx.xowa.mws.htmls.*;
import gplx.langs.regxs.*;
// TODO.XO: this->getConverterLanguage()->markNoConversion($url, true),
public class Xomw_magiclinks_wkr {
diff --git a/400_xowa/src/gplx/xowa/mws/parsers/prepros/Xomw_prepro_wkr.java b/400_xowa/src/gplx/xowa/mws/parsers/prepros/Xomw_prepro_wkr.java
index d619af805..5b6ffecca 100644
--- a/400_xowa/src/gplx/xowa/mws/parsers/prepros/Xomw_prepro_wkr.java
+++ b/400_xowa/src/gplx/xowa/mws/parsers/prepros/Xomw_prepro_wkr.java
@@ -17,7 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.mws.parsers.prepros; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*; import gplx.xowa.mws.parsers.*;
import gplx.core.btries.*;
-import gplx.langs.phps.utls.*;
+import gplx.xowa.mws.utls.*;
public class Xomw_prepro_wkr { // THREAD.UNSAFE: caching for repeated calls
private final Bry_bfr tmp_bfr = Bry_bfr_.New();
private final List_adp comments_list = List_adp_.New();
diff --git a/400_xowa/src/gplx/xowa/mws/parsers/quotes/Xomw_quote_wkr.java b/400_xowa/src/gplx/xowa/mws/parsers/quotes/Xomw_quote_wkr.java
index 16b62f5d4..8f33b6338 100644
--- a/400_xowa/src/gplx/xowa/mws/parsers/quotes/Xomw_quote_wkr.java
+++ b/400_xowa/src/gplx/xowa/mws/parsers/quotes/Xomw_quote_wkr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.mws.parsers.quotes; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*; import gplx.xowa.mws.parsers.*;
-import gplx.langs.phps.utls.*;
+import gplx.xowa.mws.utls.*;
import gplx.xowa.parsers.htmls.*;
import gplx.core.primitives.*;
public class Xomw_quote_wkr {// THREAD.UNSAFE: caching for repeated calls
diff --git a/400_xowa/src/gplx/xowa/mws/parsers/tables/Xomw_table_wkr.java b/400_xowa/src/gplx/xowa/mws/parsers/tables/Xomw_table_wkr.java
index 41bae2593..911c9d8af 100644
--- a/400_xowa/src/gplx/xowa/mws/parsers/tables/Xomw_table_wkr.java
+++ b/400_xowa/src/gplx/xowa/mws/parsers/tables/Xomw_table_wkr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.mws.parsers.tables; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*; import gplx.xowa.mws.parsers.*;
-import gplx.langs.phps.utls.*;
+import gplx.xowa.mws.utls.*;
import gplx.xowa.parsers.htmls.*;
import gplx.xowa.mws.libs.*; import gplx.xowa.parsers.uniqs.*;
public class Xomw_table_wkr implements gplx.core.brys.Bry_split_wkr {// THREAD.UNSAFE: caching for repeated calls
diff --git a/400_xowa/src/gplx/langs/phps/utls/Php_ary_.java b/400_xowa/src/gplx/xowa/mws/utls/Php_ary_.java
similarity index 90%
rename from 400_xowa/src/gplx/langs/phps/utls/Php_ary_.java
rename to 400_xowa/src/gplx/xowa/mws/utls/Php_ary_.java
index 81c8dd9b1..5efa7a978 100644
--- a/400_xowa/src/gplx/langs/phps/utls/Php_ary_.java
+++ b/400_xowa/src/gplx/xowa/mws/utls/Php_ary_.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.langs.phps.utls; import gplx.*; import gplx.langs.*; import gplx.langs.phps.*;
+package gplx.xowa.mws.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*;
public class Php_ary_ {
public static boolean Pop_bool_or_n(List_adp list) {return (boolean)List_adp_.Pop_or(list, false);}
public static byte[] Pop_bry_or_null(List_adp list) {return (byte[])List_adp_.Pop_or(list, null);}
diff --git a/400_xowa/src/gplx/langs/phps/utls/Php_encode_.java b/400_xowa/src/gplx/xowa/mws/utls/Php_encode_.java
similarity index 89%
rename from 400_xowa/src/gplx/langs/phps/utls/Php_encode_.java
rename to 400_xowa/src/gplx/xowa/mws/utls/Php_encode_.java
index 28ab330d6..9bc731d7e 100644
--- a/400_xowa/src/gplx/langs/phps/utls/Php_encode_.java
+++ b/400_xowa/src/gplx/xowa/mws/utls/Php_encode_.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.langs.phps.utls; import gplx.*; import gplx.langs.*; import gplx.langs.phps.*;
+package gplx.xowa.mws.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*;
public class Php_encode_ {
public static byte[] rawurlencode(byte[] v) {
return gplx.langs.htmls.encoders.Gfo_url_encoder_.Php_rawurlencode.Encode(v);
diff --git a/400_xowa/src/gplx/langs/phps/utls/Php_preg_.java b/400_xowa/src/gplx/xowa/mws/utls/Php_preg_.java
similarity index 94%
rename from 400_xowa/src/gplx/langs/phps/utls/Php_preg_.java
rename to 400_xowa/src/gplx/xowa/mws/utls/Php_preg_.java
index c0b12a0be..b11dd7698 100644
--- a/400_xowa/src/gplx/langs/phps/utls/Php_preg_.java
+++ b/400_xowa/src/gplx/xowa/mws/utls/Php_preg_.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.langs.phps.utls; import gplx.*; import gplx.langs.*; import gplx.langs.phps.*;
+package gplx.xowa.mws.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*;
import gplx.core.btries.*; import gplx.core.brys.*;
import gplx.core.primitives.*;
public class Php_preg_ {
diff --git a/400_xowa/src/gplx/langs/phps/utls/Php_preg___tst.java b/400_xowa/src/gplx/xowa/mws/utls/Php_preg___tst.java
similarity index 94%
rename from 400_xowa/src/gplx/langs/phps/utls/Php_preg___tst.java
rename to 400_xowa/src/gplx/xowa/mws/utls/Php_preg___tst.java
index dd47a1dc5..91911e7cf 100644
--- a/400_xowa/src/gplx/langs/phps/utls/Php_preg___tst.java
+++ b/400_xowa/src/gplx/xowa/mws/utls/Php_preg___tst.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.langs.phps.utls; import gplx.*; import gplx.langs.*; import gplx.langs.phps.*;
+package gplx.xowa.mws.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*;
import org.junit.*; import gplx.core.tests.*;
public class Php_preg___tst {
private final Php_preg___fxt fxt = new Php_preg___fxt();
diff --git a/400_xowa/src/gplx/langs/phps/utls/Php_str_.java b/400_xowa/src/gplx/xowa/mws/utls/Php_str_.java
similarity index 95%
rename from 400_xowa/src/gplx/langs/phps/utls/Php_str_.java
rename to 400_xowa/src/gplx/xowa/mws/utls/Php_str_.java
index 99be4079a..7c44ffc72 100644
--- a/400_xowa/src/gplx/langs/phps/utls/Php_str_.java
+++ b/400_xowa/src/gplx/xowa/mws/utls/Php_str_.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.langs.phps.utls; import gplx.*; import gplx.langs.*; import gplx.langs.phps.*;
+package gplx.xowa.mws.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*;
import gplx.core.btries.*;
public class Php_str_ {
public static int Strpos(byte[] src, byte find) {return Strpos(src, find, 0, src.length);}
diff --git a/400_xowa/src/gplx/langs/phps/utls/Php_str___tst.java b/400_xowa/src/gplx/xowa/mws/utls/Php_str___tst.java
similarity index 96%
rename from 400_xowa/src/gplx/langs/phps/utls/Php_str___tst.java
rename to 400_xowa/src/gplx/xowa/mws/utls/Php_str___tst.java
index 53b978f0b..bdd712c33 100644
--- a/400_xowa/src/gplx/langs/phps/utls/Php_str___tst.java
+++ b/400_xowa/src/gplx/xowa/mws/utls/Php_str___tst.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.langs.phps.utls; import gplx.*; import gplx.langs.*; import gplx.langs.phps.*;
+package gplx.xowa.mws.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*;
import org.junit.*; import gplx.core.tests.*; import gplx.core.btries.*;
public class Php_str___tst {
private final Php_str___fxt fxt = new Php_str___fxt();
diff --git a/400_xowa/src/gplx/langs/phps/utls/Php_utl_.java b/400_xowa/src/gplx/xowa/mws/utls/Php_utl_.java
similarity index 79%
rename from 400_xowa/src/gplx/langs/phps/utls/Php_utl_.java
rename to 400_xowa/src/gplx/xowa/mws/utls/Php_utl_.java
index 43a5186a9..3aea3c976 100644
--- a/400_xowa/src/gplx/langs/phps/utls/Php_utl_.java
+++ b/400_xowa/src/gplx/xowa/mws/utls/Php_utl_.java
@@ -15,12 +15,13 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.langs.phps.utls; import gplx.*; import gplx.langs.*; import gplx.langs.phps.*;
+package gplx.xowa.mws.utls; import gplx.*; import gplx.xowa.*; import gplx.xowa.mws.*;
public class Php_utl_ {
public static boolean Empty(byte[] v) {return v == null || v.length == 0;}
public static boolean Empty(boolean v) {return v == false;}
- public static boolean Is_set(byte[] v) {return v != null;}
- public static boolean isset(int v) {return v != Int_.Max_value;}
+ public static boolean isset(byte[] v) {return v != null;}
+ public static boolean isset(int v) {return v != Null_int;}
+ public static boolean istrue(int v) {return v != Null_int;}
public static boolean isnumeric(byte[] src) {
if (src == null) return false;
int len = src.length;
@@ -36,4 +37,5 @@ public class Php_utl_ {
}
return true;
}
+ public static final int Null_int = Int_.Max_value;
}