Advanced zoom

Custom Bloxd Cursor

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         Advanced zoom
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Custom Bloxd Cursor
// @author       You
// @match        https://bloxd.io/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bloxd.io
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Define constants for zoom levels and increment
    const minZoom = 100; // 100%
    const maxZoom = 500; // 500% (adjusted maximum zoom)
    const zoomIncrement = 20; // 20% (increased for faster zooming)

    // Initial zoom level
    let zoomLevel = 100; // 100%

    // Variable to track the color mode
    let colorMode = 'color'; // 'color' or 'bw'

    // Function to smoothly zoom the canvas
    function zoomCanvas(zoom) {
        const canvas = document.querySelector('canvas');

        if (!canvas) {
            console.error('Canvas not found.');
            return;
        }

        // Calculate the new zoom level within the allowed range
        zoomLevel = Math.min(Math.max(zoomLevel + zoom, minZoom), maxZoom);

        // Apply the zoom transformation with a smooth transition
        canvas.style.transition = 'transform 0.5s ease';
        canvas.style.transform = `scale(${zoomLevel / 100})`;

        // Update the zoom display
        zoomDisplay.textContent = `Zoom: ${zoomLevel}%`;

        // Update the settings icon position
        updateSettingsIconPosition();
    }

    // Function to handle zooming when 'F' key is pressed
    function handleZoom(event) {
        if (event.key === 'f' || event.key === 'F') {
            if (event.type === 'keydown') {
                // Zoom in when 'F' key is pressed
                zoomCanvas(zoomIncrement);
            } else if (event.type === 'keyup') {
                // Reset zoom to 100% when 'F' key is released
                zoomCanvas(100 - zoomLevel);
            }
        }
    }

    // Function to toggle color mode of the zoom box
    function toggleColorMode() {
        if (colorMode === 'color') {
            zoomDisplay.style.backgroundColor = '#000';
            zoomDisplay.style.color = '#fff';
            colorMode = 'bw';
        } else if (colorMode === 'bw') {
            zoomDisplay.style.backgroundColor = '#fff';
            zoomDisplay.style.color = '#000';
            colorMode = 'rgb';
        } else {
            // RGB mode
            zoomDisplay.style.backgroundColor = '#f00';
            zoomDisplay.style.color = '#0f0';
            colorMode = 'color';
        }
    }

    // Function to handle changing the size of the zoom box
    function changeZoomBoxSize() {
        const newSize = prompt('Enter the new size for the Zoom Box (in pixels):', zoomDisplay.style.fontSize);
        if (newSize) {
            zoomDisplay.style.fontSize = newSize + 'px';
            updateSettingsIconPosition();
        }
    }

    // Function to update the position of the settings icon
    function updateSettingsIconPosition() {
        const zoomBoxRect = zoomDisplay.getBoundingClientRect();
        settingsIcon.style.top = `${zoomBoxRect.top}px`;
        settingsIcon.style.left = `${zoomBoxRect.right + 10}px`;
    }

    // Create a box element for displaying zoom information
    const zoomDisplay = document.createElement('div');
    zoomDisplay.textContent = 'Zoom: 100%';
    zoomDisplay.style.position = 'fixed';
    zoomDisplay.style.top = '10px'; // Position at the top
    zoomDisplay.style.left = '50%'; // Position at the middle horizontally
    zoomDisplay.style.transform = 'translateX(-50%)'; // Center horizontally
    zoomDisplay.style.padding = '5px';
    zoomDisplay.style.border = '1px solid #ccc';
    zoomDisplay.style.backgroundColor = '#fff';
    zoomDisplay.style.color = '#000';
    zoomDisplay.style.zIndex = '9999';
    zoomDisplay.style.cursor = 'pointer'; // Add pointer cursor
    zoomDisplay.style.fontSize = '20px'; // Font size of the zoom box

    // Append the zoom display to the body of the page
    document.body.appendChild(zoomDisplay);

    // Add event listeners for keydown and keyup events to handle zooming with 'F' key
    window.addEventListener('keydown', handleZoom);
    window.addEventListener('keyup', handleZoom);

    // Event listener for zooming with mouse wheel
    document.addEventListener('wheel', function(event) {
        // Prevent the default scroll behavior
        event.preventDefault();

        // Determine the direction of the scroll
        const direction = event.deltaY > 0 ? -1 : 1;

        // Zoom the canvas if zooming is active
        if (event.key === 'f' || event.key === 'F') {
            if (document.hasFocus()) {
                zoomCanvas(zoomIncrement * direction);
            }
        }
    });

    // Event listener for toggling color mode on click
    zoomDisplay.addEventListener('click', toggleColorMode);

    // Create a settings icon
    const settingsIcon = document.createElement('span');
    settingsIcon.textContent = '🔧';
    settingsIcon.style.position = 'fixed';
    settingsIcon.style.zIndex = '9999';
    settingsIcon.style.cursor = 'pointer'; // Add pointer cursor
    settingsIcon.style.fontSize = '20px'; // Font size of the settings icon

    // Append the settings icon to the body of the page
    document.body.appendChild(settingsIcon);

    // Event listener for changing the size of the zoom box
    settingsIcon.addEventListener('click', changeZoomBoxSize);

    // Update the settings icon position initially
    updateSettingsIconPosition();
})();