⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wz_jsgraphics.js

📁 个人信息管理系统
💻 JS
📖 第 1 页 / 共 2 页
字号:
/*
 * FCKeditor - The text editor for internet
 * Copyright (C) 2003-2005 Frederico Caldeira Knabben
 * 
 * Licensed under the terms of the GNU Lesser General Public License:
 * 		http://www.opensource.org/licenses/lgpl-license.php
 * 
 * For further information visit:
 * 		http://www.fckeditor.net/
 * 
 * File Name: wz_jsgraphics.js
 * 	Javascript Graphics.
 * 
 * File Authors:
 * 		Grant French (grant@mcpuk.net)
 */
/***********************************************************************
** Title.........:  Javascript Graphics
** Version.......:  1.0
** Author........:  Xiang Wei ZHUO <wei@zhuo.org>
** Filename......:  wz_jsgraphics.js
** Last changed..:  31 Aug 2003  
** Notes.........:  Modified for Image Editor, added extra commands
**/ 

/* This notice must be untouched at all times.

wz_jsgraphics.js    v. 2.03
The latest version is available at
http://www.walterzorn.com
or http://www.devira.com
or http://www.walterzorn.de

Copyright (c) 2002-2003 Walter Zorn. All rights reserved.
Created 3. 11. 2002 by Walter Zorn <walter@kreuzotter.de>
Last modified: 11. 6. 2003

High Performance JavaScript Graphics Library.
Provides methods
- to draw lines, rectangles, ellipses, polygons
  with specifiable line thickness,
- to fill rectangles and ellipses
- to draw text.
NOTE: Operations, functions and branching have rather been optimized
to efficiency and speed than to shortness of source code.

This program is free software;
you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License
at http://www.gnu.org/copyleft/gpl.html for more details.
*/

var jg_ihtm, jg_ie, jg_dom,
jg_n4 = (document.layers && typeof document.classes != "undefined");

function chkDHTM(x, i)
{
    x = document.body || null;
    jg_ie = (x && typeof x.insertAdjacentHTML != "undefined");
    jg_dom = (x && !jg_ie &&
        typeof x.appendChild != "undefined" &&
        typeof document.createRange != "undefined" &&
        typeof (i = document.createRange()).setStartBefore != "undefined" &&
        typeof i.createContextualFragment != "undefined");
    jg_ihtm = (!jg_ie && !jg_dom && x && typeof x.innerHTML != "undefined");
}





function pntDoc()
{
    this.wnd.document.write(this.htm);
    this.htm = '';
}





function pntCnvDom()
{
    var x = document.createRange();
    x.setStartBefore(this.cnv);
    x = x.createContextualFragment(this.htm);
    this.cnv.appendChild(x);
    this.htm = '';
}





function pntCnvIe()
{
    this.cnv.insertAdjacentHTML("BeforeEnd", this.htm);
    this.htm = '';
}





function pntCnvIhtm()
{
    this.cnv.innerHTML += this.htm;
    this.htm = '';
}





function pntCnv()
{
    this.htm = '';
}





function mkDiv(x, y, w, h)
{
    this.htm += '<div style="position:absolute;'+
        'left:' + x + 'px;'+
        'top:' + y + 'px;'+
        'width:' + w + 'px;'+
        'height:' + h + 'px;'+
        'clip:rect(0,'+w+'px,'+h+'px,0);'+
        'overflow:hidden;background-color:' + this.color + ';'+
        '"><\/div>';

    //alert(this.htm);
}




function mkDivPrint(x, y, w, h)
{
    this.htm += '<div style="position:absolute;'+
        'border-left:' + w + 'px solid ' + this.color + ';'+
        'left:' + x + 'px;'+
        'top:' + y + 'px;'+
        'width:' + w + 'px;'+
        'height:' + h + 'px;'+
        'clip:rect(0,'+w+'px,'+h+'px,0);'+
        'overflow:hidden;background-color:' + this.color + ';'+
        '"><\/div>';
}





function mkLyr(x, y, w, h)
{
    this.htm += '<layer '+
        'left="' + x + '" '+
        'top="' + y + '" '+
        'width="' + w + '" '+
        'height="' + h + '" '+
        'bgcolor="' + this.color + '"><\/layer>\n';
}





function mkLbl(txt, x, y)
{
    this.htm += '<div style="position:absolute;white-space:nowrap;'+
        'left:' + x + 'px;'+
        'top:' + y + 'px;'+
        'font-family:' +  this.ftFam + ';'+
        'font-size:' + this.ftSz + ';'+
        'color:' + this.color + ';' + this.ftSty + '">'+
        txt +
        '<\/div>';
}





function mkLin(x1, y1, x2, y2)
{
    if (x1 > x2)
    {
        var _x2 = x2;
        var _y2 = y2;
        x2 = x1;
        y2 = y1;
        x1 = _x2;
        y1 = _y2;
    }
    var dx = x2-x1, dy = Math.abs(y2-y1),
    x = x1, y = y1,
    yIncr = (y1 > y2)? -1 : 1;

    if (dx >= dy)
    {
        var pr = dy<<1,
        pru = pr - (dx<<1),
        p = pr-dx,
        ox = x;
        while ((dx--) > 0)
        {
            ++x;
            if (p > 0)
            {
                this.mkDiv(ox, y, x-ox, 1);
                y += yIncr;
                p += pru;
                ox = x;
            }
            else p += pr;
        }
        this.mkDiv(ox, y, x2-ox+1, 1);
    }

    else
    {
        var pr = dx<<1,
        pru = pr - (dy<<1),
        p = pr-dy,
        oy = y;
        if (y2 <= y1)
        {
            while ((dy--) > 0)
            {
                if (p > 0)
                {
                    this.mkDiv(x++, y, 1, oy-y+1);
                    y += yIncr;
                    p += pru;
                    oy = y;
                }
                else
                {
                    y += yIncr;
                    p += pr;
                }
            }
            this.mkDiv(x2, y2, 1, oy-y2+1);
        }
        else
        {
            while ((dy--) > 0)
            {
                y += yIncr;
                if (p > 0)
                {
                    this.mkDiv(x++, oy, 1, y-oy);
                    p += pru;
                    oy = y;
                }
                else p += pr;
            }
            this.mkDiv(x2, oy, 1, y2-oy+1);
        }
    }
}





function mkLin2D(x1, y1, x2, y2)
{
    if (x1 > x2)
    {
        var _x2 = x2;
        var _y2 = y2;
        x2 = x1;
        y2 = y1;
        x1 = _x2;
        y1 = _y2;
    }
    var dx = x2-x1, dy = Math.abs(y2-y1),
    x = x1, y = y1,
    yIncr = (y1 > y2)? -1 : 1;


    var s = this.stroke;
    if (dx >= dy)
    {
        if (s-0x3 > 0)
        {
            var _s = (s*dx*Math.sqrt(1+dy*dy/(dx*dx))-dx-(s>>1)*dy) / dx;
            _s = (!(s-0x4)? Math.ceil(_s) : Math.round(_s)) + 1;
        }
        else var _s = s;
        var ad = Math.ceil(s/2);

        var pr = dy<<1,
        pru = pr - (dx<<1),
        p = pr-dx,
        ox = x;
        while ((dx--) > 0)
        {
            ++x;
            if (p > 0)
            {
                this.mkDiv(ox, y, x-ox+ad, _s);
                y += yIncr;
                p += pru;
                ox = x;
            }
            else p += pr;
        }
        this.mkDiv(ox, y, x2-ox+ad+1, _s);
    }

    else
    {
        if (s-0x3 > 0)
        {
            var _s = (s*dy*Math.sqrt(1+dx*dx/(dy*dy))-(s>>1)*dx-dy) / dy;
            _s = (!(s-0x4)? Math.ceil(_s) : Math.round(_s)) + 1;
        }
        else var _s = s;
        var ad = Math.round(s/2);

        var pr = dx<<1,
        pru = pr - (dy<<1),
        p = pr-dy,
        oy = y;
        if (y2 <= y1)
        {
            ++ad;
            while ((dy--) > 0)
            {
                if (p > 0)
                {
                    this.mkDiv(x++, y, _s, oy-y+ad);
                    y += yIncr;
                    p += pru;
                    oy = y;
                }
                else
                {
                    y += yIncr;
                    p += pr;
                }
            }
            this.mkDiv(x2, y2, _s, oy-y2+ad);
        }
        else
        {
            while ((dy--) > 0)
            {
                y += yIncr;
                if (p > 0)
                {
                    this.mkDiv(x++, oy, _s, y-oy+ad);
                    p += pru;
                    oy = y;
                }
                else p += pr;
            }
            this.mkDiv(x2, oy, _s, y2-oy+ad+1);
        }
    }
}





function mkLinDott(x1, y1, x2, y2)
{
    if (x1 > x2)
    {
        var _x2 = x2;
        var _y2 = y2;
        x2 = x1;
        y2 = y1;
        x1 = _x2;
        y1 = _y2;
    }
    var dx = x2-x1, dy = Math.abs(y2-y1),
    x = x1, y = y1,
    yIncr = (y1 > y2)? -1 : 1,
    drw = true;
    if (dx >= dy)
    {
        var pr = dy<<1,
        pru = pr - (dx<<1),
        p = pr-dx;
        while ((dx--) > 0)
        {
            if (drw) this.mkDiv(x, y, 1, 1);
            drw = !drw;
            if (p > 0)
            {
                y += yIncr;
                p += pru;
            }
            else p += pr;
            ++x;
        }
        if (drw) this.mkDiv(x, y, 1, 1);
    }

    else
    {
        var pr = dx<<1,
        pru = pr - (dy<<1),
        p = pr-dy;
        while ((dy--) > 0)
        {
            if (drw) this.mkDiv(x, y, 1, 1);
            drw = !drw;
            y += yIncr;
            if (p > 0)
            {
                ++x;
                p += pru;
            }
            else p += pr;
        }
        if (drw) this.mkDiv(x, y, 1, 1);
    }
}





function mkOv(left, top, width, height)
{
    var a = width>>1, b = height>>1,
    wod = width&1, hod = (height&1)+1,
    cx = left+a, cy = top+b,
    x = 0, y = b,
    ox = 0, oy = b,
    aa = (a*a)<<1, bb = (b*b)<<1,
    st = (aa>>1)*(1-(b<<1)) + bb,
    tt = (bb>>1) - aa*((b<<1)-1),
    w, h;
    while (y > 0)
    {
        if (st < 0)
        {
            st += bb*((x<<1)+0x3);
            tt += (bb<<1)*(++x);
        }
        else if (tt < 0)
        {
            st += bb*((x<<1)+0x3) - (aa<<1)*(y-1);
            tt += (bb<<1)*(++x) - aa*(((y--)<<1)-0x3);
            w = x-ox;
            h = oy-y;
            if (w&0x2 && h&0x2)
            {
                this.mkOvQds(cx, cy, -x+0x2, ox+wod, -oy, oy-1+hod, 1, 1);
                this.mkOvQds(cx, cy, -x+1, x-1+wod, -y-1, y+hod, 1, 1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -