This repository was archived by the owner on Jan 22, 2018. It is now read-only.

Latest commit

History

101 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DoubleDraw

This project is abandoned. If you would like to take it over, please send me a message.

DoubleDraw allows multiple people to work collaboratively on a vector drawing. A possible outdated or unstable example may or may not run here. This project aims to create a pure HTML5 vector editor as a response to Microsoft's decision for the next version of Windows™ to disallow any native applications.

DoubleDraw preview

Installing and running

The server-side is written in JavaScript. It requires NodeJs and npm (npm comes with NodeJs).

Dependencies:

Install all dependencies for node-canvas before proceeding.

For downloading all nodejs dependencies into ./node_modueles/:

npm install

The following dependencies are included in this repo and do not need to be downloaded:

Running

Start the server:

npm start

Access the server using any modern browser:

  • IE9 (or better)
  • Firefox
  • Chromium
  • Opera

Roadmap

  • User management
  • Layers
  • Upload picture
  • Record/playback
  • Save widget layout
  • Ensure consistent canvas (checksums)
  • More tools
  • Selection (deleting and moving drawings)
  • Operational transformation
  • Icons in user interface

Code

This chapter is mainly for reading the code and hacking.

Paper.js is an open source vector graphics scripting framework that runs on top of the HTML5 Canvas. When we draw using paper.js we will refer to it as drawing on "the paper".

The clients send mouse inputs (click/drag/release) events to the server. The server redistributes the events to all (including the sender) clients. The events are processed on all parties by a tool which knows what transformations (create path, edit, ect..) it should apply to the paper. All clients process the same events in the same order, this ensures a consistent paper across all parties. The server contains a paper too, this is serialized and send if a new user joins a room. A consequence of this setup is the round trip before any of your inputs show any effect on your paper.

The public folder contains all the client related code and resources. It is organized according to extjs MVC structure.

The server part is rather simply and is actually a small portion of the total code base. Its primary purposes:

  • Receive events and re-transmit them to all clients.
  • Process those events using a tool on a local paper.
  • Send paper if a new client joins a room.

The following code is shared between the server and the client for processing events and drawing on the local paper:

  • public/app/SharedPaper.js
  • public/app/UserDrawContext.js
  • public/app/model/tools/*

Contact

For bugs and feature requests you should make a ticket. Please check if there issent already a ticket open about the same issue.

For questions or offering help of any kind (programming, graphics, testers, advice) you can send a email or join on irc: room #DoubleDraw on irc.freenode.net. For convenience you can join using webchat.

License

All written code is released under WTFPL.

This program uses GPLv3 code (extjs), MIT licensed code and Creative Commons 2.5 licensed code (ntc.js Chirag Mehta, 4 Sep. 2007).

About

DoubleDraw allows multiple people to work collaboratively on a vector drawing

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Jan 22, 2018. It is now read-only.

Latest commit

History

101 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DoubleDraw

This project is abandoned. If you would like to take it over, please send me a message.

DoubleDraw allows multiple people to work collaboratively on a vector drawing. A possible outdated or unstable example may or may not run here. This project aims to create a pure HTML5 vector editor as a response to Microsoft's decision for the next version of Windows™ to disallow any native applications.

DoubleDraw preview

Installing and running

The server-side is written in JavaScript. It requires NodeJs and npm (npm comes with NodeJs).

Dependencies:

Install all dependencies for node-canvas before proceeding.

For downloading all nodejs dependencies into ./node_modueles/:

npm install

The following dependencies are included in this repo and do not need to be downloaded:

Running

Start the server:

npm start

Access the server using any modern browser:

  • IE9 (or better)
  • Firefox
  • Chromium
  • Opera

Roadmap

  • User management
  • Layers
  • Upload picture
  • Record/playback
  • Save widget layout
  • Ensure consistent canvas (checksums)
  • More tools
  • Selection (deleting and moving drawings)
  • Operational transformation
  • Icons in user interface

Code

This chapter is mainly for reading the code and hacking.

Paper.js is an open source vector graphics scripting framework that runs on top of the HTML5 Canvas. When we draw using paper.js we will refer to it as drawing on "the paper".

The clients send mouse inputs (click/drag/release) events to the server. The server redistributes the events to all (including the sender) clients. The events are processed on all parties by a tool which knows what transformations (create path, edit, ect..) it should apply to the paper. All clients process the same events in the same order, this ensures a consistent paper across all parties. The server contains a paper too, this is serialized and send if a new user joins a room. A consequence of this setup is the round trip before any of your inputs show any effect on your paper.

The public folder contains all the client related code and resources. It is organized according to extjs MVC structure.

The server part is rather simply and is actually a small portion of the total code base. Its primary purposes:

  • Receive events and re-transmit them to all clients.
  • Process those events using a tool on a local paper.
  • Send paper if a new client joins a room.

The following code is shared between the server and the client for processing events and drawing on the local paper:

  • public/app/SharedPaper.js
  • public/app/UserDrawContext.js
  • public/app/model/tools/*

Contact

For bugs and feature requests you should make a ticket. Please check if there issent already a ticket open about the same issue.

For questions or offering help of any kind (programming, graphics, testers, advice) you can send a email or join on irc: room #DoubleDraw on irc.freenode.net. For convenience you can join using webchat.

License

All written code is released under WTFPL.

This program uses GPLv3 code (extjs), MIT licensed code and Creative Commons 2.5 licensed code (ntc.js Chirag Mehta, 4 Sep. 2007).

About

DoubleDraw allows multiple people to work collaboratively on a vector drawing

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jan 22, 2018. It is now read-only.

Latest commit

History

101 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DoubleDraw

This project is abandoned. If you would like to take it over, please send me a message.

DoubleDraw allows multiple people to work collaboratively on a vector drawing. A possible outdated or unstable example may or may not run here. This project aims to create a pure HTML5 vector editor as a response to Microsoft's decision for the next version of Windows™ to disallow any native applications.

DoubleDraw preview

Installing and running

The server-side is written in JavaScript. It requires NodeJs and npm (npm comes with NodeJs).

Dependencies:

Install all dependencies for node-canvas before proceeding.

For downloading all nodejs dependencies into ./node_modueles/:

npm install

The following dependencies are included in this repo and do not need to be downloaded:

Running

Start the server:

npm start

Access the server using any modern browser:

  • IE9 (or better)
  • Firefox
  • Chromium
  • Opera

Roadmap

  • User management
  • Layers
  • Upload picture
  • Record/playback
  • Save widget layout
  • Ensure consistent canvas (checksums)
  • More tools
  • Selection (deleting and moving drawings)
  • Operational transformation
  • Icons in user interface

Code

This chapter is mainly for reading the code and hacking.

Paper.js is an open source vector graphics scripting framework that runs on top of the HTML5 Canvas. When we draw using paper.js we will refer to it as drawing on "the paper".

The clients send mouse inputs (click/drag/release) events to the server. The server redistributes the events to all (including the sender) clients. The events are processed on all parties by a tool which knows what transformations (create path, edit, ect..) it should apply to the paper. All clients process the same events in the same order, this ensures a consistent paper across all parties. The server contains a paper too, this is serialized and send if a new user joins a room. A consequence of this setup is the round trip before any of your inputs show any effect on your paper.

The public folder contains all the client related code and resources. It is organized according to extjs MVC structure.

The server part is rather simply and is actually a small portion of the total code base. Its primary purposes:

  • Receive events and re-transmit them to all clients.
  • Process those events using a tool on a local paper.
  • Send paper if a new client joins a room.

The following code is shared between the server and the client for processing events and drawing on the local paper:

  • public/app/SharedPaper.js
  • public/app/UserDrawContext.js
  • public/app/model/tools/*

Contact

For bugs and feature requests you should make a ticket. Please check if there issent already a ticket open about the same issue.

For questions or offering help of any kind (programming, graphics, testers, advice) you can send a email or join on irc: room #DoubleDraw on irc.freenode.net. For convenience you can join using webchat.

License

All written code is released under WTFPL.

This program uses GPLv3 code (extjs), MIT licensed code and Creative Commons 2.5 licensed code (ntc.js Chirag Mehta, 4 Sep. 2007).

About

DoubleDraw allows multiple people to work collaboratively on a vector drawing

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jan 22, 2018. It is now read-only.

Latest commit

History

101 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DoubleDraw

This project is abandoned. If you would like to take it over, please send me a message.

DoubleDraw allows multiple people to work collaboratively on a vector drawing. A possible outdated or unstable example may or may not run here. This project aims to create a pure HTML5 vector editor as a response to Microsoft's decision for the next version of Windows™ to disallow any native applications.

DoubleDraw preview

Installing and running

The server-side is written in JavaScript. It requires NodeJs and npm (npm comes with NodeJs).

Dependencies:

Install all dependencies for node-canvas before proceeding.

For downloading all nodejs dependencies into ./node_modueles/:

npm install

The following dependencies are included in this repo and do not need to be downloaded:

Running

Start the server:

npm start

Access the server using any modern browser:

  • IE9 (or better)
  • Firefox
  • Chromium
  • Opera

Roadmap

  • User management
  • Layers
  • Upload picture
  • Record/playback
  • Save widget layout
  • Ensure consistent canvas (checksums)
  • More tools
  • Selection (deleting and moving drawings)
  • Operational transformation
  • Icons in user interface

Code

This chapter is mainly for reading the code and hacking.

Paper.js is an open source vector graphics scripting framework that runs on top of the HTML5 Canvas. When we draw using paper.js we will refer to it as drawing on "the paper".

The clients send mouse inputs (click/drag/release) events to the server. The server redistributes the events to all (including the sender) clients. The events are processed on all parties by a tool which knows what transformations (create path, edit, ect..) it should apply to the paper. All clients process the same events in the same order, this ensures a consistent paper across all parties. The server contains a paper too, this is serialized and send if a new user joins a room. A consequence of this setup is the round trip before any of your inputs show any effect on your paper.

The public folder contains all the client related code and resources. It is organized according to extjs MVC structure.

The server part is rather simply and is actually a small portion of the total code base. Its primary purposes:

  • Receive events and re-transmit them to all clients.
  • Process those events using a tool on a local paper.
  • Send paper if a new client joins a room.

The following code is shared between the server and the client for processing events and drawing on the local paper:

  • public/app/SharedPaper.js
  • public/app/UserDrawContext.js
  • public/app/model/tools/*

Contact

For bugs and feature requests you should make a ticket. Please check if there issent already a ticket open about the same issue.

For questions or offering help of any kind (programming, graphics, testers, advice) you can send a email or join on irc: room #DoubleDraw on irc.freenode.net. For convenience you can join using webchat.

License

All written code is released under WTFPL.

This program uses GPLv3 code (extjs), MIT licensed code and Creative Commons 2.5 licensed code (ntc.js Chirag Mehta, 4 Sep. 2007).

About

DoubleDraw allows multiple people to work collaboratively on a vector drawing

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Jan 22, 2018. It is now read-only.

Latest commit

History

101 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DoubleDraw

This project is abandoned. If you would like to take it over, please send me a message.

DoubleDraw allows multiple people to work collaboratively on a vector drawing. A possible outdated or unstable example may or may not run here. This project aims to create a pure HTML5 vector editor as a response to Microsoft's decision for the next version of Windows™ to disallow any native applications.

DoubleDraw preview

Installing and running

The server-side is written in JavaScript. It requires NodeJs and npm (npm comes with NodeJs).

Dependencies:

Install all dependencies for node-canvas before proceeding.

For downloading all nodejs dependencies into ./node_modueles/:

npm install

The following dependencies are included in this repo and do not need to be downloaded:

Running

Start the server:

npm start

Access the server using any modern browser:

  • IE9 (or better)
  • Firefox
  • Chromium
  • Opera

Roadmap

  • User management
  • Layers
  • Upload picture
  • Record/playback
  • Save widget layout
  • Ensure consistent canvas (checksums)
  • More tools
  • Selection (deleting and moving drawings)
  • Operational transformation
  • Icons in user interface

Code

This chapter is mainly for reading the code and hacking.

Paper.js is an open source vector graphics scripting framework that runs on top of the HTML5 Canvas. When we draw using paper.js we will refer to it as drawing on "the paper".

The clients send mouse inputs (click/drag/release) events to the server. The server redistributes the events to all (including the sender) clients. The events are processed on all parties by a tool which knows what transformations (create path, edit, ect..) it should apply to the paper. All clients process the same events in the same order, this ensures a consistent paper across all parties. The server contains a paper too, this is serialized and send if a new user joins a room. A consequence of this setup is the round trip before any of your inputs show any effect on your paper.

The public folder contains all the client related code and resources. It is organized according to extjs MVC structure.

The server part is rather simply and is actually a small portion of the total code base. Its primary purposes:

  • Receive events and re-transmit them to all clients.
  • Process those events using a tool on a local paper.
  • Send paper if a new client joins a room.

The following code is shared between the server and the client for processing events and drawing on the local paper:

  • public/app/SharedPaper.js
  • public/app/UserDrawContext.js
  • public/app/model/tools/*

Contact

For bugs and feature requests you should make a ticket. Please check if there issent already a ticket open about the same issue.

For questions or offering help of any kind (programming, graphics, testers, advice) you can send a email or join on irc: room #DoubleDraw on irc.freenode.net. For convenience you can join using webchat.

License

All written code is released under WTFPL.

This program uses GPLv3 code (extjs), MIT licensed code and Creative Commons 2.5 licensed code (ntc.js Chirag Mehta, 4 Sep. 2007).

About

DoubleDraw allows multiple people to work collaboratively on a vector drawing

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jan 22, 2018. It is now read-only.

Latest commit

History

101 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DoubleDraw

This project is abandoned. If you would like to take it over, please send me a message.

DoubleDraw allows multiple people to work collaboratively on a vector drawing. A possible outdated or unstable example may or may not run here. This project aims to create a pure HTML5 vector editor as a response to Microsoft's decision for the next version of Windows™ to disallow any native applications.

DoubleDraw preview

Installing and running

The server-side is written in JavaScript. It requires NodeJs and npm (npm comes with NodeJs).

Dependencies:

Install all dependencies for node-canvas before proceeding.

For downloading all nodejs dependencies into ./node_modueles/:

npm install

The following dependencies are included in this repo and do not need to be downloaded:

Running

Start the server:

npm start

Access the server using any modern browser:

  • IE9 (or better)
  • Firefox
  • Chromium
  • Opera

Roadmap

  • User management
  • Layers
  • Upload picture
  • Record/playback
  • Save widget layout
  • Ensure consistent canvas (checksums)
  • More tools
  • Selection (deleting and moving drawings)
  • Operational transformation
  • Icons in user interface

Code

This chapter is mainly for reading the code and hacking.

Paper.js is an open source vector graphics scripting framework that runs on top of the HTML5 Canvas. When we draw using paper.js we will refer to it as drawing on "the paper".

The clients send mouse inputs (click/drag/release) events to the server. The server redistributes the events to all (including the sender) clients. The events are processed on all parties by a tool which knows what transformations (create path, edit, ect..) it should apply to the paper. All clients process the same events in the same order, this ensures a consistent paper across all parties. The server contains a paper too, this is serialized and send if a new user joins a room. A consequence of this setup is the round trip before any of your inputs show any effect on your paper.

The public folder contains all the client related code and resources. It is organized according to extjs MVC structure.

The server part is rather simply and is actually a small portion of the total code base. Its primary purposes:

  • Receive events and re-transmit them to all clients.
  • Process those events using a tool on a local paper.
  • Send paper if a new client joins a room.

The following code is shared between the server and the client for processing events and drawing on the local paper:

  • public/app/SharedPaper.js
  • public/app/UserDrawContext.js
  • public/app/model/tools/*

Contact

For bugs and feature requests you should make a ticket. Please check if there issent already a ticket open about the same issue.

For questions or offering help of any kind (programming, graphics, testers, advice) you can send a email or join on irc: room #DoubleDraw on irc.freenode.net. For convenience you can join using webchat.

License

All written code is released under WTFPL.

This program uses GPLv3 code (extjs), MIT licensed code and Creative Commons 2.5 licensed code (ntc.js Chirag Mehta, 4 Sep. 2007).

About

DoubleDraw allows multiple people to work collaboratively on a vector drawing

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jan 22, 2018. It is now read-only.

Latest commit

History

101 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DoubleDraw

This project is abandoned. If you would like to take it over, please send me a message.

DoubleDraw allows multiple people to work collaboratively on a vector drawing. A possible outdated or unstable example may or may not run here. This project aims to create a pure HTML5 vector editor as a response to Microsoft's decision for the next version of Windows™ to disallow any native applications.

DoubleDraw preview

Installing and running

The server-side is written in JavaScript. It requires NodeJs and npm (npm comes with NodeJs).

Dependencies:

Install all dependencies for node-canvas before proceeding.

For downloading all nodejs dependencies into ./node_modueles/:

npm install

The following dependencies are included in this repo and do not need to be downloaded:

Running

Start the server:

npm start

Access the server using any modern browser:

  • IE9 (or better)
  • Firefox
  • Chromium
  • Opera

Roadmap

  • User management
  • Layers
  • Upload picture
  • Record/playback
  • Save widget layout
  • Ensure consistent canvas (checksums)
  • More tools
  • Selection (deleting and moving drawings)
  • Operational transformation
  • Icons in user interface

Code

This chapter is mainly for reading the code and hacking.

Paper.js is an open source vector graphics scripting framework that runs on top of the HTML5 Canvas. When we draw using paper.js we will refer to it as drawing on "the paper".

The clients send mouse inputs (click/drag/release) events to the server. The server redistributes the events to all (including the sender) clients. The events are processed on all parties by a tool which knows what transformations (create path, edit, ect..) it should apply to the paper. All clients process the same events in the same order, this ensures a consistent paper across all parties. The server contains a paper too, this is serialized and send if a new user joins a room. A consequence of this setup is the round trip before any of your inputs show any effect on your paper.

The public folder contains all the client related code and resources. It is organized according to extjs MVC structure.

The server part is rather simply and is actually a small portion of the total code base. Its primary purposes:

  • Receive events and re-transmit them to all clients.
  • Process those events using a tool on a local paper.
  • Send paper if a new client joins a room.

The following code is shared between the server and the client for processing events and drawing on the local paper:

  • public/app/SharedPaper.js
  • public/app/UserDrawContext.js
  • public/app/model/tools/*

Contact

For bugs and feature requests you should make a ticket. Please check if there issent already a ticket open about the same issue.

For questions or offering help of any kind (programming, graphics, testers, advice) you can send a email or join on irc: room #DoubleDraw on irc.freenode.net. For convenience you can join using webchat.

License

All written code is released under WTFPL.

This program uses GPLv3 code (extjs), MIT licensed code and Creative Commons 2.5 licensed code (ntc.js Chirag Mehta, 4 Sep. 2007).

About

DoubleDraw allows multiple people to work collaboratively on a vector drawing

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Jan 22, 2018. It is now read-only.

Latest commit

History

101 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DoubleDraw

This project is abandoned. If you would like to take it over, please send me a message.

DoubleDraw allows multiple people to work collaboratively on a vector drawing. A possible outdated or unstable example may or may not run here. This project aims to create a pure HTML5 vector editor as a response to Microsoft's decision for the next version of Windows™ to disallow any native applications.

DoubleDraw preview

Installing and running

The server-side is written in JavaScript. It requires NodeJs and npm (npm comes with NodeJs).

Dependencies:

Install all dependencies for node-canvas before proceeding.

For downloading all nodejs dependencies into ./node_modueles/:

npm install

The following dependencies are included in this repo and do not need to be downloaded:

Running

Start the server:

npm start

Access the server using any modern browser:

  • IE9 (or better)
  • Firefox
  • Chromium
  • Opera

Roadmap

  • User management
  • Layers
  • Upload picture
  • Record/playback
  • Save widget layout
  • Ensure consistent canvas (checksums)
  • More tools
  • Selection (deleting and moving drawings)
  • Operational transformation
  • Icons in user interface

Code

This chapter is mainly for reading the code and hacking.

Paper.js is an open source vector graphics scripting framework that runs on top of the HTML5 Canvas. When we draw using paper.js we will refer to it as drawing on "the paper".

The clients send mouse inputs (click/drag/release) events to the server. The server redistributes the events to all (including the sender) clients. The events are processed on all parties by a tool which knows what transformations (create path, edit, ect..) it should apply to the paper. All clients process the same events in the same order, this ensures a consistent paper across all parties. The server contains a paper too, this is serialized and send if a new user joins a room. A consequence of this setup is the round trip before any of your inputs show any effect on your paper.

The public folder contains all the client related code and resources. It is organized according to extjs MVC structure.

The server part is rather simply and is actually a small portion of the total code base. Its primary purposes:

  • Receive events and re-transmit them to all clients.
  • Process those events using a tool on a local paper.
  • Send paper if a new client joins a room.

The following code is shared between the server and the client for processing events and drawing on the local paper:

  • public/app/SharedPaper.js
  • public/app/UserDrawContext.js
  • public/app/model/tools/*

Contact

For bugs and feature requests you should make a ticket. Please check if there issent already a ticket open about the same issue.

For questions or offering help of any kind (programming, graphics, testers, advice) you can send a email or join on irc: room #DoubleDraw on irc.freenode.net. For convenience you can join using webchat.

License

All written code is released under WTFPL.

This program uses GPLv3 code (extjs), MIT licensed code and Creative Commons 2.5 licensed code (ntc.js Chirag Mehta, 4 Sep. 2007).

About

DoubleDraw allows multiple people to work collaboratively on a vector drawing

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages