mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Custom_wiki: Integrate fs_root files into app image_cache
This commit is contained in:
parent
3581371d29
commit
ac13d00ef8
@ -48,7 +48,7 @@ public class Fs_root_core implements Xof_fsdb_mgr, Gfo_invk { // reads images fr
|
|||||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||||
if (ctx.Match(k, Invk_root_dir_)) mgr.Root_dir_(To_url(m.ReadBry("v")));
|
if (ctx.Match(k, Invk_root_dir_)) mgr.Root_dir_(To_url(m.ReadBry("v")));
|
||||||
else if (ctx.Match(k, Invk_orig_dir_)) mgr.Orig_dir_(To_url(m.ReadBry("v")));
|
else if (ctx.Match(k, Invk_orig_dir_)) mgr.Orig_dir_(To_url(m.ReadBry("v")));
|
||||||
else if (ctx.Match(k, Invk_thumb_dir_)) mgr.Thumb_dir_(To_url(m.ReadBry("v")));
|
else if (ctx.Match(k, Invk_thumb_dir_)) {}
|
||||||
else return Gfo_invk_.Rv_unhandled;
|
else return Gfo_invk_.Rv_unhandled;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -17,13 +17,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
*/
|
*/
|
||||||
package gplx.xowa.files.fsdb.fs_roots; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*;
|
package gplx.xowa.files.fsdb.fs_roots; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*;
|
||||||
import gplx.core.primitives.*; import gplx.dbs.*; import gplx.dbs.cfgs.*;
|
import gplx.core.primitives.*; import gplx.dbs.*; import gplx.dbs.cfgs.*;
|
||||||
import gplx.xowa.files.repos.*; import gplx.fsdb.meta.*;
|
import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.fsdb.meta.*;
|
||||||
class Fs_root_mgr {
|
class Fs_root_mgr {
|
||||||
private final Xowe_wiki wiki;
|
private final Xowe_wiki wiki;
|
||||||
private final Fs_root_wkr wkr = new Fs_root_wkr();
|
private final Fs_root_wkr wkr = new Fs_root_wkr();
|
||||||
|
private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2();
|
||||||
private final Xof_img_size img_size = new Xof_img_size();
|
private final Xof_img_size img_size = new Xof_img_size();
|
||||||
private final String_obj_ref tmp_resize_result = String_obj_ref.null_();
|
private final String_obj_ref tmp_resize_result = String_obj_ref.null_();
|
||||||
private Io_url orig_dir, thumb_dir;
|
private Xof_repo_itm repo;
|
||||||
|
private Io_url orig_dir;
|
||||||
public Fs_root_mgr(Xowe_wiki wiki) {
|
public Fs_root_mgr(Xowe_wiki wiki) {
|
||||||
this.wiki = wiki;
|
this.wiki = wiki;
|
||||||
}
|
}
|
||||||
@ -34,36 +36,41 @@ class Fs_root_mgr {
|
|||||||
Orig_fil_row orig_itm = wkr.Get_by_ttl(orig_ttl);
|
Orig_fil_row orig_itm = wkr.Get_by_ttl(orig_ttl);
|
||||||
if (orig_itm == Orig_fil_row.Null) return false;
|
if (orig_itm == Orig_fil_row.Null) return false;
|
||||||
|
|
||||||
// update orig
|
// update fsdb.orig metadata
|
||||||
fsdb_itm.Init_at_orig(Xof_repo_tid_.Tid__local, wiki.Domain_bry(), orig_ttl, Xof_ext_.new_by_id_(orig_itm.Ext_id()), orig_itm.W(), orig_itm.H(), null);
|
Xof_ext orig_ext = Xof_ext_.new_by_id_(orig_itm.Ext_id());
|
||||||
Io_url orig_url = orig_itm.Url();
|
fsdb_itm.Init_at_orig(Xof_repo_tid_.Tid__local, wiki.Domain_bry(), orig_ttl, orig_ext, orig_itm.W(), orig_itm.H(), null);
|
||||||
|
|
||||||
|
// gen cache_orig_url
|
||||||
|
if (repo == null) repo = wiki.File__repo_mgr().Repos_get_by_wiki(wiki.Domain_bry()).Trg(); // assert repo
|
||||||
|
Io_url cache_orig_url = url_bldr.To_url_trg(repo, fsdb_itm, Bool_.Y);
|
||||||
|
fsdb_itm.Html_orig_url_(cache_orig_url);
|
||||||
|
|
||||||
|
// update html_w, html_h, html_orig_url, html_view_url
|
||||||
|
Io_url actl_orig_url = orig_itm.Url();
|
||||||
|
fsdb_itm.Init_at_html(Xof_exec_tid.Tid_wiki_page, img_size, repo, url_bldr);
|
||||||
|
|
||||||
|
// if cache_file doesn't exist, either copy file
|
||||||
if (fsdb_itm.File_is_orig()) {
|
if (fsdb_itm.File_is_orig()) {
|
||||||
fsdb_itm.Html_size_(orig_itm.W(), orig_itm.H());
|
// copy orig to cache
|
||||||
fsdb_itm.Html_view_url_(orig_url);
|
if (!Io_mgr.Instance.ExistsFil(cache_orig_url)) {
|
||||||
fsdb_itm.Html_orig_url_(orig_url);
|
Io_mgr.Instance.CopyFil(actl_orig_url, cache_orig_url, false);
|
||||||
return true;
|
fsdb_itm.File_size_(Io_mgr.Instance.QueryFil(actl_orig_url).Size()); // set size for file_cache, else clear_cache won't delete items with 0 size
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
String thumb_rel = orig_url.GenRelUrl_orEmpty(orig_dir);
|
// make thumb by imagemagick
|
||||||
int upright_patch = wiki.File_mgr().Patch_upright();
|
Io_url cache_thumb_url = url_bldr.To_url_trg(repo, fsdb_itm, Bool_.N);
|
||||||
img_size.Html_size_calc(fsdb_itm.Lnki_exec_tid(), fsdb_itm.Lnki_w(), fsdb_itm.Lnki_h(), fsdb_itm.Lnki_type(), upright_patch, fsdb_itm.Lnki_upright(), fsdb_itm.Orig_ext().Id(), orig_itm.W(), orig_itm.H(), Xof_img_size.Thumb_width_img);
|
if (!Io_mgr.Instance.ExistsFil(cache_thumb_url)) {
|
||||||
int html_w = img_size.Html_w(), html_h = img_size.Html_h();
|
if (!wiki.Appe().File_mgr().Img_mgr().Wkr_resize_img().Resize_exec(actl_orig_url, cache_thumb_url, fsdb_itm.Html_w(), fsdb_itm.Html_h(), fsdb_itm.Orig_ext().Id(), tmp_resize_result))
|
||||||
String thumb_name = Int_.To_str(html_w) + "." + String_.new_u8(fsdb_itm.Orig_ext().Ext_view());
|
|
||||||
Io_url thumb_url = thumb_dir.GenSubFil_ary(thumb_rel + orig_url.Info().DirSpr(), thumb_name);
|
|
||||||
if (!Io_mgr.Instance.ExistsFil(thumb_url)) {
|
|
||||||
if (!wiki.Appe().File_mgr().Img_mgr().Wkr_resize_img().Resize_exec(orig_url, thumb_url, html_w, html_h, fsdb_itm.Orig_ext().Id(), tmp_resize_result))
|
|
||||||
return false;
|
return false;
|
||||||
|
fsdb_itm.File_size_(Io_mgr.Instance.QueryFil(cache_thumb_url).Size()); // set size for file_cache, else clear_cache won't delete items with 0 size
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fsdb_itm.Html_size_(html_w, html_h);
|
|
||||||
fsdb_itm.Html_view_url_(thumb_url);
|
|
||||||
fsdb_itm.Html_orig_url_(orig_url);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
public void Root_dir_(Io_url v) {
|
public void Root_dir_(Io_url v) {
|
||||||
Io_url root_dir = v;
|
Io_url root_dir = v;
|
||||||
orig_dir = root_dir.GenSubDir("orig");
|
orig_dir = root_dir.GenSubDir("orig");
|
||||||
thumb_dir = root_dir.GenSubDir("thumb");
|
|
||||||
orig_dir_mgr_init(orig_dir);
|
orig_dir_mgr_init(orig_dir);
|
||||||
}
|
}
|
||||||
public void Orig_dir_(Io_url v) {
|
public void Orig_dir_(Io_url v) {
|
||||||
@ -73,7 +80,4 @@ class Fs_root_mgr {
|
|||||||
private void orig_dir_mgr_init(Io_url orig_dir) {
|
private void orig_dir_mgr_init(Io_url orig_dir) {
|
||||||
wkr.Init(wiki.Appe().File_mgr().Img_mgr().Wkr_query_img_size(), orig_dir);
|
wkr.Init(wiki.Appe().File_mgr().Img_mgr().Wkr_query_img_size(), orig_dir);
|
||||||
}
|
}
|
||||||
public void Thumb_dir_(Io_url v) {
|
|
||||||
thumb_dir = v;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -27,8 +27,8 @@ public class Fs_root_wkr_tst {
|
|||||||
fxt.Test_db("A.png", fxt.itm_().Init(1, "mem/dir/7/70/A.png", 200, 100));
|
fxt.Test_db("A.png", fxt.itm_().Init(1, "mem/dir/7/70/A.png", 200, 100));
|
||||||
}
|
}
|
||||||
@Test public void Recurse() {
|
@Test public void Recurse() {
|
||||||
fxt.Init_fs("mem/dir/sub1/A1.png", 200, 100);
|
fxt.Init_fs("mem/dir/A/A1.png", 200, 100);
|
||||||
fxt.Test_get("A1.png", fxt.itm_().Url_("mem/dir/sub1/A1.png").Size_(200, 100));
|
fxt.Test_get("A1.png", fxt.itm_().Url_("mem/dir/A/A1.png").Size_(200, 100));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
class Fs_root_wkr_fxt {
|
class Fs_root_wkr_fxt {
|
||||||
|
Loading…
Reference in New Issue
Block a user