mirror of
https://bitbucket.org/mfeemster/fractorium.git
synced 2025-01-21 05:00:06 -05:00
Merged mfeemster/fractorium into master
This commit is contained in:
commit
adad1363c0
@ -1,6 +1,6 @@
|
||||
# Build Guide for Linux
|
||||
|
||||
The following has been tested on Ubuntu 17.10 (artful).
|
||||
The following has been tested on Ubuntu 20.
|
||||
|
||||
Make sure the package lists are up-to-date:
|
||||
|
||||
@ -13,13 +13,13 @@ Install `git` and clone the repository:
|
||||
|
||||
```
|
||||
sudo apt-get install git
|
||||
git clone --depth=1 https://mfeemster@bitbucket.org/mfeemster/fractorium.git
|
||||
git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git
|
||||
```
|
||||
|
||||
Install the dependencies.
|
||||
|
||||
```
|
||||
sudo apt-get install g++ libc6-dev libgl1-mesa-dev libgl-dev libglm-dev libjpeg-dev libpng-dev libqt5opengl5-dev libtbb-dev libxml2-dev ocl-icd-libopencl1 ocl-icd-opencl-dev opencl-headers qt5-default qt5-qmake qtbase5-dev libopenexr22 libopenexr-dev
|
||||
sudo apt-get install g++ libxcb-cursor0 libc6-dev libgl1-mesa-dev libgl-dev libglm-dev libjpeg-dev libpng-dev libqt6opengl6-dev libxml2-dev ocl-icd-libopencl1 ocl-icd-opencl-dev opencl-headers qt6-default qt6-qmake qtbase6-dev libopenexr25 libopenexr-dev
|
||||
```
|
||||
|
||||
Install the OpenCL drivers and opencl support for your hardware.
|
||||
@ -36,10 +36,10 @@ Optionally you can install the Nvidia-specific `nvidia-libopencl1-384` package,
|
||||
but keep in mind that this will remove the generic ones (`ocl-icd-opencl-dev`
|
||||
and `ocl-icd-libopencl1`).
|
||||
|
||||
If you have both Qt 4 and 5 installed, select Qt 5 before compilation:
|
||||
If you have both Qt 5 and 6 installed, select Qt 6 before compilation:
|
||||
|
||||
```
|
||||
export QT_SELECT=qt5
|
||||
export QT_SELECT=qt6
|
||||
```
|
||||
|
||||
Compile the binaries, they will be created in the `Bin/release` folder.
|
||||
|
@ -2,21 +2,22 @@
|
||||
|
||||
Install Xcode from the App Store
|
||||
|
||||
Install Qt 5.4.2 (Note, newer versions of Qt up to and including 5.8 have a bug with drawing OpenGL lines)
|
||||
Install Qt 6.5.1
|
||||
|
||||
Install [homebrew](http://brew.sh/).
|
||||
|
||||
Install `git` and clone the repository:
|
||||
Install Command Line Tools for Xcode
|
||||
|
||||
Clone the repository:
|
||||
|
||||
```
|
||||
brew install git
|
||||
git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git
|
||||
```
|
||||
|
||||
Install the dependencies:
|
||||
|
||||
```
|
||||
brew install qt5 tbb glm jpeg libpng glib libxml2 openexr
|
||||
brew install glm jpeg libpng glib openexr@2
|
||||
```
|
||||
|
||||
Add the Qt `bin` folder to `PATH` to make `qmake` available. In
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Build Guide For Visual Studio 2019 or Qt Creator
|
||||
# Build Guide For Visual Studio 2022 or Qt Creator
|
||||
## Tools
|
||||
|
||||
### git
|
||||
@ -7,15 +7,15 @@ Install [git](https://git-scm.com/downloads).
|
||||
|
||||
### Visual Studio
|
||||
|
||||
Install [Microsoft Visual Studio 2019 or later](https://www.visualstudio.com/downloads/), then install the latest updates.
|
||||
Install [Microsoft Visual Studio 2022 or later](https://www.visualstudio.com/downloads/), then install the latest updates.
|
||||
|
||||
### Qt
|
||||
|
||||
Install Qt for Windows 64-bit (VS 2017) 5.12.8 or later (http://www.qt.io/download/).
|
||||
Install Qt for Windows 64-bit (VS 2019) 6.5.1 or later (http://www.qt.io/download/).
|
||||
|
||||
Add system environment variable named `QTPATH` and point it to the location of the Qt folder. On a default install, this will be something like:
|
||||
|
||||
`C:\Qt\5.12.8\msvc2017_64`
|
||||
`C:\Qt\6.5.1\msvc2019_64`
|
||||
|
||||
### Wix
|
||||
|
||||
@ -59,7 +59,7 @@ Go into the fractorium folder and run this script which will get the rest of the
|
||||
|
||||
`makedeps.bat`
|
||||
|
||||
This will download and build `glm libopenexr libpng libxml tbb zlib`. You will have a folder structure like this:
|
||||
This will download and build `glm libopenexr libpng libxml zlib`. You will have a folder structure like this:
|
||||
|
||||
```
|
||||
[fractorium]
|
||||
@ -69,32 +69,25 @@ This will download and build `glm libopenexr libpng libxml tbb zlib`. You will h
|
||||
├─libpng
|
||||
├─libxml2
|
||||
├─openexr
|
||||
├─tbb
|
||||
└─fractorium
|
||||
│
|
||||
├─Deps
|
||||
│
|
||||
├─Iex-3_1.dll
|
||||
├─IlmThread-3_1.dll
|
||||
├─IMath-3_1.dll
|
||||
├─libxml2.dll
|
||||
├─OpenEXR-3_1.dll
|
||||
├─Iex-3_1.lib
|
||||
├─IlmThread-3_1.lib
|
||||
├─Imath-3_1.lib
|
||||
├─libjpeg.lib
|
||||
├─libpng.lib
|
||||
├─libxml2.lib
|
||||
├─libxml2.dll
|
||||
├─tbb.dll
|
||||
├─tbb.lib
|
||||
├─OpenEXR-3_1.lib
|
||||
├─OpenEXRCore-3_1.lib
|
||||
├─OpenEXRUtil-3_1.lib
|
||||
├─zlib.lib
|
||||
├─Half-2_3.lib
|
||||
├─Iex-2_3.lib
|
||||
├─IexMath-2_3.lib
|
||||
├─IlmImf-2_3.lib
|
||||
├─IlmImfUtil-2_3.lib
|
||||
├─IlmThread-2_3.lib
|
||||
├─Imath-2_3.lib
|
||||
├─Half-2_3.dll
|
||||
├─Iex-2_3.dll
|
||||
├─IexMath-2_3.dll
|
||||
├─IlmImf-2_3.dll
|
||||
├─IlmImfUtil-2_3.dll
|
||||
├─IlmThread-2_3.dll
|
||||
├─Imath-2_3.dll
|
||||
```
|
||||
|
||||
## Building with Qt Creator or Visual Studio
|
||||
@ -120,17 +113,17 @@ The outputs will be placed in `fractorium/Bin/release` several minutes later if
|
||||
|
||||
Install the [Visual Studio Qt Addon](http://www.qt.io/download/).
|
||||
|
||||
Run Visual Studio and verify there is a menu item named *Qt5*. Click on it and click *Qt Options*.
|
||||
Run Visual Studio and verify there is a menu item named *Qt6*. Click on it and click *Qt Options*.
|
||||
|
||||
Add a new Qt version to the list with the exact name of "Qt5", and set its path to the same as `$QTPATH`, which will be something like:
|
||||
Add a new Qt version to the list with the exact name of "Qt6", and set its path to the same as `$QTPATH`, which will be something like:
|
||||
|
||||
`C:\Qt\5.12.8\msvc2017_64`
|
||||
`C:\Qt\6.5.1\msvc2019_64`
|
||||
|
||||
The name "Qt5" must match exactly and this step must be completed before the Fractorium solution is opened. If not, the Qt add-in will completely ruin all solution and project files that use Qt.
|
||||
The name "Qt6" must match exactly and this step must be completed before the Fractorium solution is opened. If not, the Qt add-in will completely ruin all solution and project files that use Qt.
|
||||
|
||||
Set the default version to the newly created Qt version and click *Ok*.
|
||||
|
||||
Open the file Fractorium.sln under Builds/MSVC/2019
|
||||
Open the file Fractorium.sln under Builds/MSVC
|
||||
|
||||
Set the configuration to release, and build all.
|
||||
|
||||
@ -154,17 +147,13 @@ Apatite_Supergroup.ugr
|
||||
boxtail_pack_02.gradient
|
||||
boxtail_pack_03_triangle.gradient
|
||||
boxtail_pack_04_mineshack.gradient
|
||||
concrt140.dll
|
||||
dark_windows.qss
|
||||
lightdark.qss
|
||||
ember.dll
|
||||
ember.exp
|
||||
ember.lib
|
||||
emberanimate.exe
|
||||
embercl.dll
|
||||
embercl.exp
|
||||
embercl.lib
|
||||
embergenome.exe
|
||||
emberrender.exe
|
||||
Ember.dll
|
||||
EmberAnimate.exe
|
||||
EmberCL.dll
|
||||
EmberGenome.exe
|
||||
EmberRender.exe
|
||||
fardareismai_pack_01_variety_number_128.gradient
|
||||
fardareismai_pack_02_b_sides.gradient
|
||||
fardareismai_pack_03_old_and_new.gradient
|
||||
@ -172,18 +161,20 @@ fardareismai_pack_04_hoard.gradient
|
||||
Feldspar_Group.ugr
|
||||
flam3-palettes.xml
|
||||
fractaldesire_pack_01.gradient
|
||||
fractorium.exe
|
||||
half-2_3.dll
|
||||
iex-2_3.dll
|
||||
iexmath-2_3.dll
|
||||
ilmimf-2_3.dll
|
||||
ilmthread-2_3.dll
|
||||
imath-2_3.dll
|
||||
Fractorium.exe
|
||||
Iex-3_1.dll
|
||||
IlmThread-3_1.dll
|
||||
Imath-3_1.dll
|
||||
libxml2.dll
|
||||
lightdark.qss
|
||||
Mica_Group.ugr
|
||||
Qt5Core.dll
|
||||
Qt5Gui.dll
|
||||
Qt5Widgets.dll
|
||||
msvcp140.dll
|
||||
OpenEXR-3_1.dll
|
||||
Qt6Core.dll
|
||||
Qt6Gui.dll
|
||||
Qt6OpenGL.dll
|
||||
Qt6OpenGLWidgets.dll
|
||||
Qt6Widgets.dll
|
||||
Quartz_Varieties.ugr
|
||||
rce_ordinary_pack_01_colornation.gradient
|
||||
tatasz_pack_01.gradient
|
||||
@ -191,75 +182,87 @@ tatasz_pack_02_colder.gradient
|
||||
tatasz_pack_02_dark.gradient
|
||||
tatasz_pack_02_warmer.gradient
|
||||
tatasz_pack_03.gradient
|
||||
tbb.dll
|
||||
tatasz_pack_04.gradient
|
||||
tatasz_pack_05.gradient
|
||||
tatasz_pack_06.gradient
|
||||
tatasz_pack_07.gradient
|
||||
uranium.qss
|
||||
user-palettes.xml
|
||||
vccorlib140.dll
|
||||
vcruntime140.dll
|
||||
vcruntime140_1.dll
|
||||
imageformats\qjpeg.dll
|
||||
platforms\qwindows.dll
|
||||
```
|
||||
|
||||
Double click fractorium.exe to run it, and use the command line to run the others.
|
||||
|
||||
To run on a computer without Visual Studio 2017, these files also need to be in the folder:
|
||||
To run on a computer without Visual Studio 2022, these files also need to be in the folder:
|
||||
|
||||
```
|
||||
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\msvcp140.dll
|
||||
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vcruntime140.dll
|
||||
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vcruntime140_1.dll
|
||||
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vccorlib140.dll
|
||||
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\concrt140.dll
|
||||
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\msvcp140.dll
|
||||
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\vcruntime140.dll
|
||||
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\vcruntime140_1.dll
|
||||
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\vccorlib140.dll
|
||||
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\concrt140.dll
|
||||
```
|
||||
|
||||
or you can install [Visual C++ Redistributable Packages for Visual Studio 2019 (64 bit)](https://www.visualstudio.com/downloads/)
|
||||
or you can install [Visual C++ Redistributable Packages for Visual Studio 2022 (64 bit)](https://www.visualstudio.com/downloads/)
|
||||
|
||||
## Final file structure for distribution
|
||||
|
||||
```
|
||||
[YOUR FOLDER]
|
||||
│
|
||||
├─ Amphibole_Supergroup.ugr
|
||||
├─ Apatite_Supergroup.ugr
|
||||
├─ boxtail_pack_02.gradient
|
||||
├─ boxtail_pack_03_triangle.gradient
|
||||
├─ boxtail_pack_04_mineshack.gradient
|
||||
├─ dark_windows.qss
|
||||
├─ lightdark.qss
|
||||
├─ ember.dll
|
||||
├─ emberanimate.exe
|
||||
├─ embercl.dll
|
||||
├─ embergenome.exe
|
||||
├─ emberrender.exe
|
||||
├─ fardareismai_pack_01_variety_number_128.gradient
|
||||
├─ fardareismai_pack_02_b_sides.gradient
|
||||
├─ fardareismai_pack_03_old_and_new.gradient
|
||||
├─ fardareismai_pack_04_hoard.gradient
|
||||
├─ Feldspar_Group.ugr
|
||||
├─ flam3-palettes.xml
|
||||
├─ fractaldesire_pack_01.gradient
|
||||
├─ fractorium.exe
|
||||
├─ half-2_3.dll
|
||||
├─ iex-2_3.dll
|
||||
├─ iexmath-2_3.dll
|
||||
├─ ilmimf-2_3.dll
|
||||
├─ ilmthread-2_3.dll
|
||||
├─ imath-2_3.dll
|
||||
├─ libxml2.dll
|
||||
├─ Mica_Group.ugr
|
||||
├─ Qt5Core.dll
|
||||
├─ Qt5Gui.dll
|
||||
├─ Qt5Widgets.dll
|
||||
├─ Quartz_Varieties.ugr
|
||||
├─ rce_ordinary_pack_01_colornation.gradient
|
||||
├─ tatasz_pack_01.gradient
|
||||
├─ tatasz_pack_02_colder.gradient
|
||||
├─ tatasz_pack_02_dark.gradient
|
||||
├─ tatasz_pack_02_warmer.gradient
|
||||
├─ tatasz_pack_03.gradient
|
||||
├─ tbb.dll
|
||||
│
|
||||
├─ msvcp140.dll (optional)
|
||||
├─ vcruntime140.dll (optional)
|
||||
├─ vcruntime140_1.dll (optional)
|
||||
├─ vccorlib140.dll (optional)
|
||||
├─ concrt140.dll (optional)
|
||||
├─Amphibole_Supergroup.ugr
|
||||
├─Apatite_Supergroup.ugr
|
||||
├─boxtail_pack_02.gradient
|
||||
├─boxtail_pack_03_triangle.gradient
|
||||
├─boxtail_pack_04_mineshack.gradient
|
||||
├─dark_windows.qss
|
||||
├─Ember.dll
|
||||
├─EmberAnimate.exe
|
||||
├─EmberCL.dll
|
||||
├─EmberGenome.exe
|
||||
├─EmberRender.exe
|
||||
├─fardareismai_pack_01_variety_number_128.gradient
|
||||
├─fardareismai_pack_02_b_sides.gradient
|
||||
├─fardareismai_pack_03_old_and_new.gradient
|
||||
├─fardareismai_pack_04_hoard.gradient
|
||||
├─Feldspar_Group.ugr
|
||||
├─flam3-palettes.xml
|
||||
├─fractaldesire_pack_01.gradient
|
||||
├─Fractorium.exe
|
||||
├─Iex-3_1.dll
|
||||
├─IlmThread-3_1.dll
|
||||
├─Imath-3_1.dll
|
||||
├─libxml2.dll
|
||||
├─lightdark.qss
|
||||
├─Mica_Group.ugr
|
||||
├─OpenEXR-3_1.dll
|
||||
├─Qt6Core.dll
|
||||
├─Qt6Gui.dll
|
||||
├─Qt6OpenGL.dll
|
||||
├─Qt6OpenGLWidgets.dll
|
||||
├─Qt6Widgets.dll
|
||||
├─Quartz_Varieties.ugr
|
||||
├─rce_ordinary_pack_01_colornation.gradient
|
||||
├─tatasz_pack_01.gradient
|
||||
├─tatasz_pack_02_colder.gradient
|
||||
├─tatasz_pack_02_dark.gradient
|
||||
├─tatasz_pack_02_warmer.gradient
|
||||
├─tatasz_pack_03.gradient
|
||||
├─tatasz_pack_04.gradient
|
||||
├─tatasz_pack_05.gradient
|
||||
├─tatasz_pack_06.gradient
|
||||
├─tatasz_pack_07.gradient
|
||||
├─uranium.qss
|
||||
├─user-palettes.xml
|
||||
├─msvcp140.dll (optional)
|
||||
├─vcruntime140.dll (optional)
|
||||
├─vcruntime140_1.dll (optional)
|
||||
├─vccorlib140.dll (optional)
|
||||
├─concrt140.dll (optional)
|
||||
│
|
||||
└─imageformats
|
||||
│
|
||||
|
@ -2,7 +2,7 @@
|
||||
%define buildroot %{_topdir}/BUILDROOT
|
||||
|
||||
Name: Fractorium
|
||||
Version: 22.21.4.2
|
||||
Version: 23.23.8.1
|
||||
Release: 1
|
||||
Summary: A fractal flame editor with GPU support
|
||||
|
||||
|
@ -10,7 +10,7 @@ Starting with a fresh clone from bitbucket.org. It will not work unless it's tot
|
||||
```
|
||||
$ git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git
|
||||
$ cd fractorium
|
||||
$ qmake main.pro -r -spec linux-g++-64 CONFIG+="release native"
|
||||
$ qmake main.pro -r -spec linux-g++-64 CONFIG+=release
|
||||
```
|
||||
|
||||
### Building a `.deb` locally
|
||||
@ -69,7 +69,7 @@ To build the AppImage after successfully building using the make after qmake has
|
||||
|
||||
Ensure you these have two files in the folder up one level from the fractorium folder:
|
||||
|
||||
`linuxdeployqt-6-x86_64.AppImage`
|
||||
`linuxdeployqt-continuous-x86_64.AppImage`
|
||||
|
||||
`appimagetool-x86_64.AppImage`
|
||||
|
||||
|
@ -1,3 +1,51 @@
|
||||
23.23.8.1 8/6/2023
|
||||
|
||||
--User changes
|
||||
-Add Clear Sequence button to the Sequence Panel.
|
||||
-Add animation preview in the sequence generator output pane.
|
||||
-Add two new options --width and --height to EmberRender and EmberAnimate to allow the user to specify absolute dimensions to render the image at.
|
||||
-Add a new option to EmberAnimate --ignore-existing which makes it skip rendering a frame if the files from all of the requested extensions for that frame already exist.
|
||||
-Add new preset dimensions to the right click menu of the width and height fields in the editor.
|
||||
-Make various fields in the Options window be resettable via double click.
|
||||
-Fix various bugs in stylesheets to get them working properly on Windows and Linux with Qt6.
|
||||
--Change QSS stylesheets to properly handle tabs.
|
||||
--Make tabs rectangular by default. For some reason, they had always been triangular.
|
||||
--Set default style to Fusion.
|
||||
-Change installer to install to program files for all users.
|
||||
|
||||
--Bug fixes
|
||||
-Handle forward slashes better in file output paths.
|
||||
-Start and end tags were not properly included in the final render backup file output.
|
||||
-Numbering of rendered files was wrong.
|
||||
-Truchet_hex_fill was not compiling with some newer Nvidia drivers.
|
||||
-Contrast was too sensitive.
|
||||
-Incremental rendering times in the editor were wrong.
|
||||
-Proper sizing of vertical header on the xaos visualization table on Linux.
|
||||
-Options window layout was completely broken.
|
||||
-Error when saving screen on macOS at first time.
|
||||
-Center progress bars on Linux.
|
||||
|
||||
--Code changes
|
||||
-Upgrade openexr to version 3.1.3.
|
||||
-Remove all dependencies on Intel Threading Building Blocks and write our own version of parallel_for().
|
||||
-Test if directories exist before adding to INCLUDEPATH.
|
||||
-Fix compiler warnings in XmlToEmber.
|
||||
-Remove unused varIndex = IndexInXform.
|
||||
-Change Sequence Preview to PREVIEW_SIZE (128).
|
||||
-Add include for /usr/include/Imath for OpenEXR to defaults.pri because it wasn't building on some linux systems with out it.
|
||||
-Fix warning about unused CLStrings.
|
||||
-Migrate to VS2022 and no longer use a version specific folder for the VS solution and project files. It is now under a version agnostic folder called Solution.
|
||||
-Migrate to Qt6. There is probably more work to be done here.
|
||||
-Migrate to Wix 4 installer.
|
||||
-Fix many VS2022 code analysis warnings.
|
||||
-No longer use byte typedef, because std::byte is now a type. Revert all back to unsigned char.
|
||||
-Upgrade OpenCL headers to version 3.0 and keep locally now rather than trying to look for system files.
|
||||
-No longer link to Nvidia or AMD specific OpenCL libraries. Use the generic installer located at OCL_ROOT.
|
||||
-Add the ability to change OpenCL grid dimensions. This was attempted for investigating possible performance improvments, but made no difference.
|
||||
-Get build and deployment scripts working with latest versions of Qt6, AppImage, and various library dependencies.
|
||||
-Add two new macros so it would build with the latest gcc: SINGLETON_DERIVED_DECL_T and SINGLETON_DERIVED_IMPL_T.
|
||||
-Small changes to opencl.hpp to get it to build.
|
||||
|
||||
22.21.4.2 4/19/2021
|
||||
|
||||
--User changes
|
||||
|
@ -8,7 +8,7 @@ Homepage: http://fractorium.com/
|
||||
Vcs-Git: https://bitbucket.org/mfeemster/fractorium
|
||||
Vcs-Browser: https://bitbucket.org/mfeemster/fractorium
|
||||
Package: Fractorium
|
||||
Version: 22.21.4.2
|
||||
Version: 23.23.8.1
|
||||
Architecture: amd64
|
||||
Description: A fractal flame editor with GPU support
|
||||
Fractorium
|
||||
|
@ -148,13 +148,15 @@ void Fractorium::InitParamsUI()
|
||||
/// <param name="h">The height of the preset</param>
|
||||
void Fractorium::AddSizePreset(QString name, int w, int h)
|
||||
{
|
||||
auto widthAction = new QAction(name, m_WidthSpin);
|
||||
QString caption;
|
||||
QTextStream(&caption) << name << " (" << ToString<int>(w) << " x " << ToString<int>(h) << ")";
|
||||
auto widthAction = new QAction(caption, m_WidthSpin);
|
||||
connect(widthAction, SIGNAL(triggered(bool)), this, SLOT(PresetWidthActionTriggered(bool)), Qt::QueuedConnection);
|
||||
m_WidthSpin->addAction(widthAction);
|
||||
auto heightAction = new QAction(name, m_HeightSpin);
|
||||
auto heightAction = new QAction(caption, m_HeightSpin);
|
||||
connect(heightAction, SIGNAL(triggered(bool)), this, SLOT(PresetHeightActionTriggered(bool)), Qt::QueuedConnection);
|
||||
m_HeightSpin->addAction(heightAction);
|
||||
m_HeightPresets[name] = std::pair<int, int>(w, h);
|
||||
m_HeightPresets[caption] = std::pair<int, int>(w, h);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
Loading…
Reference in New Issue
Block a user