OpenBoard is a cross-platform interactive whiteboard application intended for use in a classroom setting.

OpenBoard

OpenBoard is an open source cross-platform interactive white board application designed primarily for use in schools. It was originally forked from Open-Sankoré, which was itself based on Uniboard.

Supported platforms are Windows (7+), OS X (10.9+) and Linux (tested on Ubuntu 16.04).

Installing

Installers are available for Windows, OS X and Ubuntu on the wiki.

Building from source

First, obtain the third party libraries from the OpenBoard-ThirdParty repository, and build them (instructions are provided for each library).

Then, you may use the build (and packaging) scripts which are provided for all three platforms. These take care of compiling OpenBoard, including the translations (for OpenBoard and for Qt), stripping the debug symbols, creating the installers etc. Minor modification to those scripts may be necessary depending on your configuration, to set the correct Qt path for example.

Alternatively, you can easily build OpenBoard with qmake and make:

qmake OpenBoard.pro -spec linux-g++-64      # replace linux-g++-64 by macx or win32 for other platforms
make

Compilers used are gcc (Linux), clang (OS X) and MSVC 2010 (Windows). Make sure that your version of Qt matches this, as it is not possible e.g to build OpenBoard with clang if Qt was built with gcc.

Dependencies

The latest version (1.5) requires Qt 5.5. (While it has been shown to mostly work with Qt 5.2, we cannot guarantee compatibility with Qt versions other than 5.5.)

Qt 5.5 on Linux

Due to a shared library conflict within Qt 5 in some distributions / some Qt versions (the Multimedia and Webkit modules were built against different versions of gstreamer by default), a specific installation of Qt5.5 may be needed for all of OpenBoard's features to work correctly.

It can either be built from source, with the configure flag -gstreamer 1.0 (see here), or installed from Stephan Binner's PPAs on Ubuntu. In the latter case, simply add the repositories and install Qt 5.5.1 like so (example provided for Ubuntu 14.04, aka "Trusty"):

sudo add-apt-repository ppa:beineri/opt-qt551-trusty
sudo apt-get update
sudo apt-get install qt-latest

Some distributions, such as Ubuntu 16.04, provide Qt 5.5.1 packages that work perfectly with OpenBoard, so you can simply install Qt from the official repository.

Comments
  • How to compile OpenBoard

    How to compile OpenBoard

    Ceci n'est pas un vrai bug, mais une demande. Un étudiant de Blois va travailler en mai et juin sur le code d'OpenBoard afin de faire des propositions sur quelques "améliorations" décrites ici. Serait-il possible d'avoir un "how to" qui permette de compiler le source sur Windows et sur Ubuntu? francois point barillon at ac-orleans-tours point fr

  • Possibility to run on a separate window

    Possibility to run on a separate window

    HI. I would like the openboard to be run on a separate (i.e. resizable) window. I have read the forum thread at https://openboard.ch/forum/viewtopic.php?t=931 and I think I disagree with the arguments there. I understand the "default" full screen mechanism (for unexperienced users), but an experienced user should be able to have one (or both windows) to be windowed. Nowadays, with the COVID19 emergency it is even more important: on the "control" screen with the online teaching we all do, it is important to have the control of the class (via Zoom, Microsoft Teams, Meet or others) AND the editing of the board, while the other screen is used to show slides, the whiteboard etc. It would really make a hit if, at least, the editing window could be resizable. Thanks a lot!

  • Compile on Fedora (30)

    Compile on Fedora (30)

    Hello, what is todo to compile on Fedora 30? I try this adjusted script but it ends with error:

    #Packages 
    dnf install git qt5 qt5-qtsvg-devel qt5-qtwebkit-devel qt5-qtxmlpatterns-devel qt5-qtscript-devel openssl-devel libpaper-devel motif-devel qt5-qtmultimedia-devel qt5-qttools-devel redhat-lsb-core
    
    #Source from git
    git clone https://github.com/OpenBoard-Org/OpenBoard.git
    git clone https://github.com/OpenBoard-Org/OpenBoard-Importer.git
    git clone https://github.com/OpenBoard-Org/OpenBoard-ThirdParty.git
    
    #Build the Third-Party libraries
    cd OpenBoard-ThirdParty/freetype
    qmake-qt5 freetype.pro -spec linux-g++
    make
    
    cd ../quazip
    qmake-qt5 quazip.pro -spec linux-g++
    make
    
    cd ../xpdf/xpdf-3.04
    ./configure --with-freetype2-library="../../freetype/lib/linux" --with-freetype2-includes="../../freetype/freetype-2.6.1/include"
    cd ..
    qmake-qt5 xpdf.pro -spec linux-g++
    make
    
    #Build the Open-Sankoré document importer (optional)
    cd ../../OpenBoard-Importer
    qmake-qt5 OpenBoardImporter.pro -spec linux-g++
    make
    
    #Build OpenBoard
    cd ../OpenBoard
    qmake-qt5 OpenBoard.pro -spec linux-g++-64
    make
    

    Error: make[1]: *** Keine Regel vorhanden, um das Ziel „QtWebKit/QWebView“, benötigt von „build/linux/release/ui/ui_trapFlash.h“, zu erstellen. Schluss. make[1]: Verzeichnis „/home/ag/openboard/OpenBoard“ wird verlassen make: *** [Makefile:42: release] Fehler 2

  • Desktop mode broken on Mutter

    Desktop mode broken on Mutter

    On the gnome desktop, the desktop mode is not working properly.

    -The overlay is not always in the front, clicking on another window -Drawing does nothing, until you switch to the keyboard or mouse in the panel. At this moment, the mask is redrawn and the drawn lines show up.

    I already made a fix for both issues, I will make a pull request shortly with the details.

  • OpenBoard-in-a-Window

    OpenBoard-in-a-Window

    With these changes normal compilation of OpenBoard won't change anything. But you can choose, when running "qmake", to create an OpenBoard executable which will run in its own window, instead of fullscreen. I've tested in Linux, Windows and macOS. http://webdiis.unizar.es/u/spd/openboard/

  • Compilation error on Debian Stretch

    Compilation error on Debian Stretch

    English version below.

    Bonsoir, je tente de compiler OpenBoard sur Debian 9 (Stretch) sur une architecture i686 (pas supportée par le paquet Ubuntu qui est pour amd64). En suivant les instructions du Readme, j'ai pu installer les dépendances du dépôt OpenBoard-ThirdParty mais je bloquais au qmake d'OpenBoard jusqu'à tomber sur https://github.com/OpenBoard-org/OpenBoard/wiki/Install. Je bloque désormais au make d'OpenBoard qui produit l'erreur copiée en fin de message.

    Pour info, j'utilise Qt 5.7.1 et OpenSSL 1.1.0.

    Good evening, I am trying to compile OpenBoard on Debian 9 (Stretch) on a i686 architecture (not suported by the Ubuntu package for amd64). Following the instructions on the Readme, I managed to install the dependencies from the OpenBoard-ThirdParty repository but I used to be blocked at OpenBoard's qmake until I found https://github.com/OpenBoard-org/OpenBoard/wiki/Install. I am now blocked at OpenBoard's make producing the following error message.

    I use Qt5.7.1 and OpenSSL 1.1.0.

    g++ -c -pipe -fopenmp -O2 -w -D_REENTRANT -fPIC -DQUAZIP_STATIC -DNO_THIRD_PARTY_WARNINGS -DUBVERSION="\"1.3.6."\" -DUBVERSION_RC=1,3,6,240,0 -DQT_NO_DEBUG -DQT_WEBKITWIDGETS_LIB -DQT_WEBKIT_LIB -DQT_SVG_LIB -DQT_UITOOLS_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB -DQT_XMLPATTERNS_LIB -DQT_NETWORK_LIB -DQT_XML_LIB -DQT_SCRIPT_LIB -DQT_CORE_LIB -Isrc -I../OpenBoard-ThirdParty/zlib/1.2.8/include -I../OpenBoard-ThirdParty/xpdf/xpdf-3.04 -I../OpenBoard-ThirdParty/xpdf/xpdf-3.04/goo -I../OpenBoard-ThirdParty/xpdf/xpdf-3.04/splash -Isrc/web/browser -Isrc/pdf-merger -I../OpenBoard-ThirdParty/quazip -I../OpenBoard-ThirdParty/zlib/1.2.8/include -I../OpenBoard-ThirdParty/quazip/quazip-0.7.1 -I../OpenBoard-ThirdParty/qt/singleapplication -I../OpenBoard-ThirdParty/qt/singleapplication -I../OpenBoard-ThirdParty/qt/lockedfile -isystem /usr/include/i386-linux-gnu/qt5 -isystem /usr/include/i386-linux-gnu/qt5/QtWebKitWidgets -isystem /usr/include/i386-linux-gnu/qt5/QtWebKit -isystem /usr/include/i386-linux-gnu/qt5/QtSvg -isystem /usr/include/i386-linux-gnu/qt5/QtUiTools -isystem /usr/include/i386-linux-gnu/qt5/QtMultimediaWidgets -isystem /usr/include/i386-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/i386-linux-gnu/qt5/QtWidgets -isystem /usr/include/i386-linux-gnu/qt5/QtMultimedia -isystem /usr/include/i386-linux-gnu/qt5/QtGui -isystem /usr/include/i386-linux-gnu/qt5/QtXmlPatterns -isystem /usr/include/i386-linux-gnu/qt5/QtNetwork -isystem /usr/include/i386-linux-gnu/qt5/QtXml -isystem /usr/include/i386-linux-gnu/qt5/QtScript -isystem /usr/include/i386-linux-gnu/qt5/QtCore -Ibuild/linux/release/moc -Ibuild/linux/release/ui -I/usr/lib/i386-linux-gnu/qt5/mkspecs/linux-g++ -o build/linux/release/objects/UBApplication.o src/core/UBApplication.cpp
    In file included from src/core/UBApplication.cpp:66:0:
    src/frameworks/UBCryptoUtils.h:63:24: error: field ‘mAesEncryptContext’ has incomplete type ‘EVP_CIPHER_CTX {aka evp_cipher_ctx_st}’
             EVP_CIPHER_CTX mAesEncryptContext;
                            ^~~~~~~~~~~~~~~~~~
    In file included from /usr/include/openssl/evp.h:14:0,
                     from src/frameworks/UBCryptoUtils.h:34,
                     from src/core/UBApplication.cpp:66:
    /usr/include/openssl/ossl_typ.h:90:16: note: forward declaration of ‘EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}’
     typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
                    ^~~~~~~~~~~~~~~~~
    In file included from src/core/UBApplication.cpp:66:0:
    src/frameworks/UBCryptoUtils.h:64:24: error: field ‘mAesDecryptContext’ has incomplete type ‘EVP_CIPHER_CTX {aka evp_cipher_ctx_st}’
             EVP_CIPHER_CTX mAesDecryptContext;
                            ^~~~~~~~~~~~~~~~~~
    In file included from /usr/include/openssl/evp.h:14:0,
                     from src/frameworks/UBCryptoUtils.h:34,
                     from src/core/UBApplication.cpp:66:
    /usr/include/openssl/ossl_typ.h:90:16: note: forward declaration of ‘EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}’
     typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
                    ^~~~~~~~~~~~~~~~~
    Makefile.Release:3530 : la recette pour la cible « build/linux/release/objects/UBApplication.o » a échouée
    
  • [SOLVED] Installing OpenBoard v1.5.4 on Ubuntu 18.04+

    [SOLVED] Installing OpenBoard v1.5.4 on Ubuntu 18.04+

    UPDATE: For Ubuntu 20.04+, OpenBoard v1.6.1 (or latter) is recommended.

    OpenBoard v1.5.4 was released for Ubuntu 16.04 (Xenial Xerus) and some dependencies are no longer present on Ubuntu 18.04+, namely libavcodec-ffmpeg56. However, adding temporarily a couple of Xenial's repositories does the trick. Doing so shouldn't break your system since 18.04+ have up to date packages and those missing from Xenial have different naming (packages and files). This is however no warranty.

    Tested on: 18.04 (Bionic Beaver), 19.10 (Eoan Ermine), 20.04 (Focal Fossa, ##issuecomment-636052149).

    1. Upgrade the system.
    2. Add Xenial repositories.
    3. Update the package database.
    4. Download and install OpenBoard v1.5.4.
    5. Fix broken dependencies.
    6. Remove Xenial repositories.
    7. Update the package database (just in case).
    sudo apt update && sudo apt upgrade
    echo -e "# Xenial repositories to satisfy OpenBoard v1.5.4 dependencies\n"\
    "deb http://es.archive.ubuntu.com/ubuntu xenial main universe\n"\
    "deb http://security.ubuntu.com/ubuntu xenial-security main universe"\
    | sudo tee /etc/apt/sources.list.d/openboard-xenial.list
    sudo apt update
    wget https://github.com/OpenBoard-org/OpenBoard/releases/download/v1.5.4/openboard_ubuntu_16.04_1.5.4_amd64.deb
    sudo dpkg -i openboard_ubuntu_16.04_1.5.4_amd64.deb
    sudo apt --fix-broken install
    sudo mv /etc/apt/sources.list.d/openboard-xenial.list{,.save}
    sudo apt update
    
  • 2019/2020 Roadmap

    2019/2020 Roadmap

    Hello everyone,

    I wanted to give you a small update on the current status of OpenBoard's development. Recently, we were working at porting OpenBoard to qt 5.9, on the three supported platforms, with qtwebkit as a third dependency.

    Porting OpenBoard to Qt 5.9 implied some good news :

    • Because Qt 5.9 apps can be built with msvc 2017 and mscv 2017 supports C++11, we can now use C++11 based libraries on the three platforms, so ffmpeg can now be used on Windows too
    • OpenBoard can now be built in 64bit on Windows
    • qtwebkit latest builds provide a way more up-to-date support around web-oriented technologies (WebGL, HTML5, CSS features, etc)

    These changes are really important, but it is not a small task. While making OpenBoard work with Qt5.9 fixed some issues, it created new ones. At the same time, it has been decided that Ubuntu 20.04 will be deployed in our Linux machines (in Geneva schools), so OpenBoard will have to support it.

    Because of the last point, the team and I think that it became more interesting to port OpenBoard directly to the latest version of Qt (5.12 or 5.13).

    We hope to find the time to replace xpdf by libpoppler (on the three platforms) in the same time.

    In parallel, we are preparing the last version that will be based on Qt5.5, OpenBoard 1.5.4. This release will only contain bugfixes (some by the community!) and small features, but will improve the user experience quite a bit.

    We know that a lot of features (and some really good ideas) are requested, and we apologize for not being able to satisfy everyone's desire, but as you may read so (too?) many times, we have very limited resources.

    Thank you, a lot, for the support you send us (from all around the world) and the feedback you take time to give.

  • Dots issue v 1.6.1

    Dots issue v 1.6.1

    After updating version to 1.6.1 I start to having those dots at the beginning of every line. I can switch versions back and forth to repeat this problem, so I think it's version related issue.

    Driver reinstalled, OpenBoard reinstalled, tablet replugged.

    Windows 10 Pro 20H2 Wacom Bamboo CTL-470K OpenBoard 1.5.4, 1.6.1

    v 1 5 4 v 1 6 1

  • Shortcut configuration

    Shortcut configuration

    This pull request implements a flexible configuration of shortcuts for actions triggered by keyboard, special mouse buttons or tablet stylus buttons. It is still draft, as intensive testing is still needed. Here a description of what was added or changed:

    • The preferences have a new Shortcut tab showing a list of actions and associated shortcuts.
    • The actions are grouped. Grouping is hard-coded in the UBShortcutManager and can be extended there.
    • The list can be filtered by typing any part of a description or shortcut.
    • When an action is selected, the shortcuts for that action can be edited by "recording". This means, that you press the "Record" button and then any key combination, mouse button and/or stylus button you want to assign to that action. When finished, press "Accept" or "Abort". When accepted, the shortcut(s) are assigned to that action.
    • You can reset the shortcuts to the application defaults using the "Reset" button.
    • All mouse buttons except left and right and all stylus buttons can be used to trigger actions.
    • When you type a conflicting shortcut, you will be warned and the offending entry is shown in the table.
    • There is a checkbox to allow all shortcuts which are combinations using the Ctrl key also to be triggered without pressing Ctrl. If the Alt key is specified in a shortcut, this is unaffected by this checkbox.
    • The configured state is persisted in the user settings.
    • All shortcuts can also be triggered when the owning palette is not shown. I.e. it is no longer necessary to display the stylus palette in order to use Ctrl+I, Ctrl+E etc.

    The pull request especially needs intensive testing on Windows and Mac, as I'm developing on Linux and do not have other platforms available for testing. Any feedback is highly appreciated!

    My branch is based on the latest release candidate https://github.com/OpenBoard-org/OpenBoard/releases/tag/v1.6.1rc-0309, so all features and bug fixes of that release are also included.

  • qmake on Ubuntu 19.10 fails

    qmake on Ubuntu 19.10 fails

    I've successfully managed to build the ThidParty software but the main Openboard build fails with:

    make OpenBoard.pro -spec linux-g++-64 sh: 1: Syntax error: "&" unexpected sh: 1: Syntax error: "&" unexpected sh: 1: Syntax error: "&" unexpected

  • Changing CSS Cursor for Pencil writing

    Changing CSS Cursor for Pencil writing

    After using various whiteboards as a teaching faculty, I realized some small cursor or small pencil icon is very much comfortable for a user. CSS Crosshair can be used as a selector cursor(and not as pencil cursor)

    Its a very small change to change the value of some CSS attributes from Crosshair to some png. Default can be used as a fallback

  • Linux Scrall and move with finger

    Linux Scrall and move with finger

    Dear OpenBoard-Team,

    i testest OpenBoard and i can't zoom or move the Board with fingers. I Tryed it on a Linux Mint, with a Wacom Tablet (Cintiq pro Touch). I can write on the board (the linux driver are horrible in comparison with Windows - poor Wacom!) with a pencil and that works good. But i can't use my fingers to zoom or move the Board.

    Is it my fault or is it possible to integrate this feature?

    Thanks Thoys

  • Qt Known issues according to OS and Qt version (WIP)

    Qt Known issues according to OS and Qt version (WIP)

    This issue helps keeping track of Qt known issues impacting OpenBoard.

    bold = blocker issues

    5.15.0

    • [x] random modern-css support issues (webengine)
    • [x] random crashes during navigation (webengine) (rare)
    • [x] pdf not rendering in webengine
    • [x] QTBUG-84462 (menu always on left screen)
    • [ ] cursor changes not detected in widgets
    • [x] permission request not showing on a widget
    • [ ] cannot close context menu after right click on a widget

    Ubuntu

    • [x] QTBUG-81341 no interaction above gnome dock
    • [ ] QTBUG-88309 (crash if right click on text item)
    • [x] on-the-fly display changes issues with 2 screens (restart then OK)
    • [x] on-the-fly display changes issues with 3 screens (restart then OK)

    Windows

    macOS

    5.15.2

    • [x] random modern-css support issues (webengine)
    • [x] random crashes during navigation (webengine) (rare)
    • [ ] pdf not rendering in webengine
    • [x] QTBUG-84462 (menu always on left screen)
    • [ ] cursor changes not detected in widgets
    • [x] permission request not showing on a widget

    Ubuntu

    • [x] QTBUG-81341 no interaction above gnome dock
    • [x] QTBUG-88309 (crash if right click on text item)
    • [x] on-the-fly display changes issues with 2 screens (restart then OK)
    • [x] on-the-fly display changes issues with 3 screens (restart then OK)
    • [ ] cannot close context menu after right click on a widget

    Windows

    macOS

    6.2.4

    • [x] random modern-css support issues (webengine)
    • [x] random crashes during navigation (webengine) (rare)
    • [ ] pdf not rendering in webengine
    • [ ] QTBUG-84462 (menu always on left screen)
    • [ ] cursor changes not detected in widgets
    • [ ] permission request not showing on a widget

    Ubuntu

    • [x] QTBUG-81341 no interaction above gnome dock
    • [ ] QTBUG-88309 (crash if right click on text item)
    • [x] on-the-fly display changes issues with 2 screens (restart then OK)
    • [x] on-the-fly display changes issues with 3 screens (restart then OK)
    • [x] cannot close context menu after right click on a widget

    Windows

    macOS

    • [ ] WIP

    6.4.0

    • [x] random modern-css support issues (webengine)
    • [x] random crashes during navigation (webengine) (rare)
    • [ ] pdf not rendering in webengine
    • [x] QTBUG-84462 (menu always on left screen)
    • [x] cursor changes not detected in widgets
    • [ ] permission request not showing on a widget

    Ubuntu

    • [x] QTBUG-81341 no interaction above gnome dock
    • [ ] QTBUG-88309 (crash if right click on text item)
    • [x] on-the-fly display changes issues with 2 screens (restart then OK)
    • [x] on-the-fly display changes issues with 3 screens (restart then OK)
    • [ ] cannot close context menu after right click on a widget

    Windows

    macOS

  • No audio input device selected; using default

    No audio input device selected; using default

    I am using ubuntu 22.04 and openboard 1.6.1+dfsg2-1 getting error Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway. sAppSettings location: "/usr/share/openboard/etc/OpenBoard.config" libpng warning: iCCP: CRC error libpng warning: iCCP: known incorrect sRGB profile Persisting document; path is "/home/sarthak/.local/share/OpenBoard/document/OpenBoard Document 2022-11-07 10-59-11.358/metadata.rdf" Invalid path data; path truncated. [libx264 @ 0x562501978980] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 [libx264 @ 0x562501978980] profile High, level 6.0, 4:2:0, 8-bit [libx264 @ 0x562501978980] 264 - core 163 r3060 5db6aa6 - H.264/MPEG-4 AVC codec - Copyleft 2003-2021 - http://www.videolan.org/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=8 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=2 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=2 keyint=10 keyint_min=1 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=crf mbtree=1 crf=20.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 No audio input device selected; using default [SWR @ 0x562505077e00] Value -1.000000 for parameter 'in_channel_count' out of range [0 - 64] [SWR @ 0x562505077e00] Value -1.000000 for parameter 'in_sample_rate' out of range [0 - 2.14748e+09] [SWR @ 0x562505077e00] Requested input sample rate 0 is invalid FFmpeg video encoder: "Couldn't initialize the resampling context: Invalid argument"

  • Hide cross-hair cursor when lifting pen if preview circle on (patch attached)

    Hide cross-hair cursor when lifting pen if preview circle on (patch attached)

    I found that when writing on an interactive whiteboard, when I would lift the pen, a cross-hair cursor would appear at the end of the last stroke, even if the preview circle was on. This makes the text harder to read for the audience.

    This patch shows the preview circle on mouse and tablet lift events, if it is supposed to be shown. In the existing code, this was only done for move events, not lift events. The patch should apply against the master git branch, 1.6.4.

    It requires making drawMarkerCircle and drawPenCircle public functions in class UBGraphicsScene.

    diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp
    index 7f334161..3b82add5 100644
    --- a/src/board/UBBoardView.cpp
    +++ b/src/board/UBBoardView.cpp
    @@ -420,6 +420,13 @@ void UBBoardView::tabletEvent (QTabletEvent * event)
             scene ()->setToolCursor (currentTool);
             setToolCursor (currentTool);
     
    +        if (currentTool == UBStylusTool::Marker) {
    +            scene()->drawMarkerCircle(scenePos);
    +        }
    +        else if (currentTool == UBStylusTool::Pen) {
    +            scene()->drawPenCircle(scenePos);
    +        }
    +
             scene ()->inputDeviceRelease ();
     
             mPendingStylusReleaseEvent = false;
    @@ -1274,6 +1281,15 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event)
         UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
     
         setToolCursor (currentTool);
    +
    +    QPointF scenePos = mapToScene(event->pos());
    +    if (currentTool == UBStylusTool::Marker) {
    +        scene()->drawMarkerCircle(scenePos);
    +    }
    +    else if (currentTool == UBStylusTool::Pen) {
    +        scene()->drawPenCircle(scenePos);
    +    }
    +
         // first/ propagate device release to the scene
         if (scene())
             scene()->inputDeviceRelease();
    diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h
    index b6addfc4..4e7d0399 100644
    --- a/src/domain/UBGraphicsScene.h
    +++ b/src/domain/UBGraphicsScene.h
    @@ -394,6 +394,8 @@ public slots:
             void textUndoCommandAdded(UBGraphicsTextItem *textItem);
     
             void setToolCursor(int tool);
    +        void drawMarkerCircle(const QPointF& pEndPoint);
    +        void drawPenCircle(const QPointF& pEndPoint);
     
             void selectionChangedProcessing();
             void moveMagnifier();
    @@ -422,8 +424,6 @@ public slots:
             void redrawEraser(bool pressed);
             void hideEraser();
             void drawPointer(const QPointF& pEndPoint, bool isFirstDraw = false);
    -        void drawMarkerCircle(const QPointF& pEndPoint);
    -        void drawPenCircle(const QPointF& pEndPoint);
             void hideMarkerCircle();
             void hidePenCircle();
             void DisposeMagnifierQWidgets();
    
WslinkClient is a client intended to communicate with Wslink, which is a unique loader running as a server

WslinkClient WslinkClient is a client intended to communicate with Wslink, which is a unique loader running as a server and executing received modules

Apr 19, 2022
WiFi scanner with visual persistence, intended to find the idlest channel e.g. to assign to a ZigBee device
WiFi scanner with visual persistence, intended to find the idlest channel e.g. to assign to a ZigBee device

WiFiChanViz Motivation This tool was initially coded to help find the idlest 2.4GHz channel in order to connect a ZigBee device to HomeAssistant in id

Oct 27, 2022
Cross-platform, efficient, customizable, and robust asynchronous HTTP/WebSocket server C++14 library with the right balance between performance and ease of use

What Is RESTinio? RESTinio is a header-only C++14 library that gives you an embedded HTTP/Websocket server. It is based on standalone version of ASIO

Nov 13, 2022
LANDrop is a cross-platform tool that you can use to conveniently transfer photos, videos, and other types of files to other devices on the same local network.
LANDrop is a cross-platform tool that you can use to conveniently transfer photos, videos, and other types of files to other devices on the same local network.

LANDrop is a cross-platform tool that you can use to conveniently transfer photos, videos, and other types of files to other devices on the same local network.

Nov 27, 2022
modern c++(c++17), cross-platform, header-only, easy to use http framework
modern c++(c++17), cross-platform, header-only, easy to use http framework

cinatra--一个高效易用的c++ http框架 English | 中文 目录 使用cinatra常见问题汇总(FAQ) cinatra简介 如何使用 快速示例 性能测试 注意事项 roadmap 联系方式 cinatra简介 cinatra是一个高性能易用的http框架,它是用modern

Nov 16, 2022
RakNet is a cross platform, open source, C++ networking engine for game programmers.

RakNet 4.081 Copyright (c) 2014, Oculus VR, Inc. Package notes The Help directory contains index.html, which is full help documentation in HTML format

Nov 19, 2022
LibVNCServer/LibVNCClient are cross-platform C libraries that allow you to easily implement VNC server or client functionality in your program.

LibVNCServer: A library for easy implementation of a VNC server. Copyright (C) 2001-2003 Johannes E. Schindelin If you already used LibVNCServer, you

Nov 24, 2022
RakNet is a cross platform, open source, C++ networking engine for game programmers.

RakNet 4.081 Copyright (c) 2014, Oculus VR, Inc. Package notes The Help directory contains index.html, which is full help documentation in HTML format

Nov 19, 2022
An extensible, cross-platform, single-header C/C++ OpenGL loader library.

Simple OpenGL Loader An extensible, cross-platform, single-header C/C++ OpenGL loader library. Usage For Windows Win32 or Linux X11 applications, the

Oct 19, 2022
Mars is a cross-platform network component developed by WeChat.
Mars is a cross-platform network component  developed by WeChat.

Mars is a cross-platform infrastructure component developed by WeChat Mobile Team

Nov 19, 2022
Cross-platform library for building Telegram clients

TDLib (Telegram Database library) is a cross-platform library for building Telegram clients. It can be easily used from almost any programming language.

Nov 17, 2022
Brynet - Header Only Cross platform high performance TCP network library using C++ 11.
Brynet - Header Only Cross platform high performance TCP network library using C++ 11.

Brynet Header Only Cross platform high performance TCP network library using C++ 11. Build status Windows : Linux/MacOS : Features Header only Cross p

Nov 26, 2022
A cross-platform SDK enabling developers to integrate real-time chat technology into their projects

4Players ODIN SDK ODIN is a cross-platform software development kit (SDK) that enables developers to integrate real-time chat technology into multipla

Oct 28, 2022
The C++ Network Library Project -- cross-platform, standards compliant networking library.

C++ Network Library Modern C++ network programming libraries. Join us on Slack: http://slack.cpp-netlib.org/ Subscribe to the mailing list: https://gr

Nov 11, 2022
A cross-platform HTTP client library with a focus on usability and speed

EasyHttp A cross-platform HTTP client library with a focus on usability and speed. Under its hood, EasyHttp uses POCO C++ Libraries and derives many o

Nov 9, 2022
SoftEther VPN - Cross-platform multi-protocol VPN software.
 SoftEther VPN - Cross-platform multi-protocol VPN software.

SoftEther VPN - Cross-platform multi-protocol VPN software.

Nov 23, 2022
A cross-platform network learning demos. Like high-performance http server

Network-Learn A cross-platform network learning demos (toys). And I try not to use 3rd-party libraries. Welcome to try it out and leave your comments.

Sep 6, 2022
Tiny cross-platform HTTP / HTTPS client library in C.

naett /nɛt:/ Tiny HTTP client library in C. Wraps native HTTP client functionality on macOS, Windows, Linux, iOS and Android in a single, simple non-b

Nov 19, 2022
aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line.

aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.

Nov 22, 2022