MCPcopy
hub / github.com/ollm/OpenComic / magnifyingGlassControl

Function magnifyingGlassControl

scripts/reading.js:2851–2931  ·  view source on GitHub ↗
(mode, event = false, lensData = false)

Source from the content-addressed store, hash-verified

2849var magnifyingGlassControlST = false, prevMagnifyingGlassControlRect = false;
2850
2851function magnifyingGlassControl(mode, event = false, lensData = false)
2852{
2853 let x = 0, y = 0;
2854
2855 if(event)
2856 {
2857 const originalEvent = event.originalEvent || event;
2858
2859 x = originalEvent.touches ? originalEvent.touches[0].pageX : (event.pageX || !event.clientX ? event.pageX : event.clientX);
2860 y = originalEvent.touches ? originalEvent.touches[0].pageY : (event.pageY || !event.clientY ? event.pageY : event.clientY);
2861 }
2862
2863 let contentRight = template._contentRight();
2864
2865 if(mode == 1)
2866 {
2867 if(mode !== magnifyingGlassPosition.mode)
2868 clearTimeout(magnifyingGlassControlST);
2869
2870 let ratio = lensData?.ratio ? lensData.ratio : config.readingMagnifyingGlassRatio;
2871 let zoom = lensData?.zoom ? lensData.zoom : config.readingMagnifyingGlassZoom;
2872 let lensWidth = lensData?.size ? lensData.size : config.readingMagnifyingGlassSize;
2873 let lensHeight = Math.round(lensWidth * ratio);
2874
2875 let lensHeightM = Math.round(lensHeight / 2);
2876 let lensWidthM = Math.round(lensWidth / 2);
2877
2878 let top = (y - lensHeightM);
2879 let left = (x - (lensWidth / 2));
2880
2881 let rect = showComicSkip !== false && prevMagnifyingGlassControlRect ? prevMagnifyingGlassControlRect : contentRight.querySelector('.reading-body').getBoundingClientRect();
2882 prevMagnifyingGlassControlRect = rect;
2883
2884 let topLens = y - rect.top - (lensHeightM / zoom);
2885 let leftLens = x - rect.left - lensWidthM;
2886
2887 dom.this(contentRight).find('.reading-lens').css({
2888 display: 'block',
2889 contentVisibility: 'visible',
2890 transform: 'translate('+left+'px, '+top+'px)',
2891 width: lensWidth+'px',
2892 height: lensHeight+'px',
2893 borderRadius: ((lensData && typeof lensData.radius != 'undefined') ? lensData.radius : config.readingMagnifyingGlassRadius)+'px'
2894 }).removeClass('d', 'h').addClass('a');
2895
2896 dom.this(contentRight).find('.reading-lens > div').css({
2897 transform: 'scale('+zoom+') translate(' + (-(leftLens)) + 'px, ' + (-(topLens)) + 'px)',
2898 transformOrigin: '',
2899 transition: '',
2900 });
2901
2902 magnifyingGlassView = true;
2903
2904 magnifyingGlassPosition = {
2905 x: x,
2906 y: y,
2907 mode: mode,
2908 };

Callers 4

activeMagnifyingGlassFunction · 0.85
changeMagnifyingGlassFunction · 0.85
readFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected