diff --git a/ActionManager.cpp b/ActionManager.cpp index 02f66e6..8d954f8 100644 --- a/ActionManager.cpp +++ b/ActionManager.cpp @@ -77,7 +77,7 @@ void captureMixerSession(Session *se, tinyxml2::XMLDocument *doc, std::string no sessionNode->SetAttribute("label", label.c_str() ); // label describes the action sessionNode->SetAttribute("date", SystemToolkit::date_time_string().c_str() ); - // view indicates the view when this action occured + // view indicates the view when this action occurred sessionNode->SetAttribute("view", (int) Mixer::manager().view()->mode()); // get the thumbnail (requires one opengl update to render) @@ -482,7 +482,7 @@ static void saveSnapshot(const std::string& filename, tinyxml2::XMLElement *snap tinyxml2::XMLDocument xmlDoc; XMLError eResult = xmlDoc.LoadFile(filename.c_str()); if ( XMLResultError(eResult)){ - Log::Warning("%s could not be openned for re-export.", filename.c_str()); + Log::Warning("%s could not be opened for re-export.", filename.c_str()); return; } XMLElement *header = xmlDoc.FirstChildElement(APP_NAME); diff --git a/BaseToolkit.cpp b/BaseToolkit.cpp index e5ec941..5dbe08f 100644 --- a/BaseToolkit.cpp +++ b/BaseToolkit.cpp @@ -72,12 +72,12 @@ std::string BaseToolkit::uniqueName(const std::string &basename, std::list dictionnary_; - std::map::const_iterator existingentry = dictionnary_.find(input); + static std::map dictionary_; + std::map::const_iterator existingentry = dictionary_.find(input); - if (existingentry == dictionnary_.cend()) { + if (existingentry == dictionary_.cend()) { auto ucs = icu::UnicodeString::fromUTF8(input); @@ -96,11 +96,11 @@ std::string BaseToolkit::transliterate(const std::string &input) output << ucs; // remember for future - dictionnary_[input] = output.str(); + dictionary_[input] = output.str(); } // return remembered transliterated text - return dictionnary_[input]; + return dictionary_[input]; } diff --git a/ControlManager.cpp b/ControlManager.cpp index 8674c3d..4583b4b 100644 --- a/ControlManager.cpp +++ b/ControlManager.cpp @@ -327,12 +327,12 @@ void Control::loadOscConfig() void Control::resetOscConfig() { - // generate a template xml translation dictionnary + // generate a template xml translation dictionary tinyxml2::XMLDocument xmlDoc; tinyxml2::XMLDeclaration *pDec = xmlDoc.NewDeclaration(); xmlDoc.InsertFirstChild(pDec); tinyxml2::XMLComment *pComment = xmlDoc.NewComment("The OSC translator converts OSC address patterns into other ones.\n" - "Complete the dictionnary by adding as many translations as you want.\n" + "Complete the dictionary by adding as many translations as you want.\n" "Each should contain a pattern to translate into a pattern.\n" "More at https://github.com/brunoherbelin/vimix/wiki/Open-Sound-Control-API."); xmlDoc.InsertEndChild(pComment); diff --git a/FrameBuffer.cpp b/FrameBuffer.cpp index e87c512..8548e78 100644 --- a/FrameBuffer.cpp +++ b/FrameBuffer.cpp @@ -303,19 +303,27 @@ void FrameBuffer::checkFramebufferStatus() Log::Warning("GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT​ is returned if the framebuffer does not have at least one image attached to it."); break; case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: - Log::Warning("GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER​ is returned if the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE​ is GL_NONE​ for any color attachment point(s) named by GL_DRAWBUFFERi​."); + Log::Warning("GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER​ is returned if the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE​ is GL_NONE​ for any color " + "attachment point(s) named by GL_DRAWBUFFERi​."); break; case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: - Log::Warning("GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER​ is returned if GL_READ_BUFFER​ is not GL_NONE​ and the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE​ is GL_NONE​ for the color attachment point named by GL_READ_BUFFER."); + Log::Warning("GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER​ is returned if GL_READ_BUFFER​ is not GL_NONE​ and the value of " + "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE​ is GL_NONE​ for the color attachment point named by GL_READ_BUFFER."); break; case GL_FRAMEBUFFER_UNSUPPORTED: - Log::Warning("GL_FRAMEBUFFER_UNSUPPORTED​ is returned if the combination of internal formats of the attached images violates an implementation-dependent set of restrictions."); + Log::Warning("GL_FRAMEBUFFER_UNSUPPORTED​ is returned if the combination of internal formats of the attached images violates an " + "implementation-dependent set of restrictions."); break; case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: - Log::Warning("GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE​ is returned if the value of GL_RENDERBUFFER_SAMPLES​ is not the same for all attached renderbuffers; if the value of GL_TEXTURE_SAMPLES​ is the not same for all attached textures; or, if the attached images are a mix of renderbuffers and textures, the value of GL_RENDERBUFFER_SAMPLES​ does not match the value of GL_TEXTURE_SAMPLES.\nGL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE​ is also returned if the value of GL_TEXTURE_FIXED_SAMPLE_LOCATIONS​ is not the same for all attached textures; or, if the attached images are a mix of renderbuffers and textures, the value of GL_TEXTURE_FIXED_SAMPLE_LOCATIONS​ is not GL_TRUE​ for all attached textures."); + Log::Warning("GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE​ is returned if the value of GL_RENDERBUFFER_SAMPLES​ is not the same for all attached renderbuffers; " + "if the value of GL_TEXTURE_SAMPLES​ is the not same for all attached textures; or, if the attached images are a mix of renderbuffers and textures, the value of " + "GL_RENDERBUFFER_SAMPLES​ does not match the value of GL_TEXTURE_SAMPLES.\nGL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE​ is also returned if the value of " + "GL_TEXTURE_FIXED_SAMPLE_LOCATIONS​ is not the same for all attached textures; or, if the attached images are a mix of renderbuffers and textures, " + "the value of GL_TEXTURE_FIXED_SAMPLE_LOCATIONS​ is not GL_TRUE​ for all attached textures."); break; case GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: - Log::Warning("GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS​ is returned if any framebuffer attachment is layered, and any populated attachment is not layered, or if all populated color attachments are not from textures of the same target."); + Log::Warning("GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS​ is returned if any framebuffer attachment is layered, and any populated attachment is not layered," + " or if all populated color attachments are not from textures of the same target."); break; case GL_FRAMEBUFFER_UNDEFINED: Log::Warning(" GL_FRAMEBUFFER_UNDEFINED​ is returned if target​ is the default framebuffer, but the default framebuffer does not exist."); diff --git a/ImGuiToolkit.h b/ImGuiToolkit.h index f38e965..b2dd1fc 100644 --- a/ImGuiToolkit.h +++ b/ImGuiToolkit.h @@ -56,7 +56,7 @@ namespace ImGuiToolkit void ValueBar(float fraction, const ImVec2& size_arg); - // fonts from ressources 'fonts/' + // fonts from resources 'fonts/' typedef enum { FONT_DEFAULT =0, FONT_BOLD, diff --git a/Log.cpp b/Log.cpp index ddf6051..b109182 100644 --- a/Log.cpp +++ b/Log.cpp @@ -284,7 +284,7 @@ void Log::Render(bool *showWarnings) ImGuiToolkit::Icon(9, 4); ImGui::SameLine(0, IMGUI_SAME_LINE); ImGui::SetNextItemWidth(width); - ImGui::TextColored(ImVec4(1.0f,0.6f,0.0f,1.0f), "%ld error(s) occured.\n\n", warnings.size()); + ImGui::TextColored(ImVec4(1.0f,0.6f,0.0f,1.0f), "%ld error(s) occurred.\n\n", warnings.size()); ImGui::Dummy(ImVec2(width, 0)); ImGui::PushTextWrapPos(ImGui::GetCursorPos().x + width); diff --git a/MediaPlayer.cpp b/MediaPlayer.cpp index 9c6c54a..02dec26 100644 --- a/MediaPlayer.cpp +++ b/MediaPlayer.cpp @@ -444,7 +444,7 @@ void MediaPlayer::Frame::unmap() void MediaPlayer::close() { - // not openned? + // not opened? if (!opened_) { // wait for loading to finish if (discoverer_.valid()) diff --git a/MediaPlayer.h b/MediaPlayer.h index 9ccd397..0299c64 100644 --- a/MediaPlayer.h +++ b/MediaPlayer.h @@ -111,7 +111,7 @@ public: * */ bool isOpen() const; /** - * True if problem occured + * True if problem occurred * */ bool failed() const; /** diff --git a/NetworkSource.cpp b/NetworkSource.cpp index 530b182..24880f6 100644 --- a/NetworkSource.cpp +++ b/NetworkSource.cpp @@ -285,7 +285,7 @@ void NetworkStream::update() pipelinestring.append(" ! videoconvert "); #ifdef NETWORK_DEBUG - Log::Info("Openning pipeline %s", pipelinestring.c_str()); + Log::Info("Opening pipeline %s", pipelinestring.c_str()); #endif // open the pipeline with generic stream class Stream::open(pipelinestring, config_.width, config_.height); diff --git a/Resource.cpp b/Resource.cpp index 02b8e95..ee212a3 100644 --- a/Resource.cpp +++ b/Resource.cpp @@ -122,7 +122,7 @@ const char *Resource::getData(const std::string& path, size_t* out_file_size){ data = static_cast(it); } catch (const std::system_error &e) { - Log::Error("Could not access ressource %s", std::string(path).c_str()); + Log::Error("Could not access resource %s", std::string(path).c_str()); } return data; @@ -138,7 +138,7 @@ std::string Resource::getText(const std::string& path){ file_stream << std::string(file.begin(), file.end()) << std::endl; } catch (const std::system_error &e) { - Log::Error("Could not access ressource %s", std::string(path).c_str()); + Log::Error("Could not access resource %s", std::string(path).c_str()); } return file_stream.str(); @@ -162,14 +162,14 @@ uint Resource::getTextureDDS(const std::string& path, float *aspect_ratio) size_t size = 0; const char *fp = getData(path, &size); if ( size==0 ){ - Log::Error("Could not open ressource %s: empty?", std::string(path).c_str()); + Log::Error("Could not open resource %s: empty?", std::string(path).c_str()); return 0; } // verify the type of file = bytes [0 - 3] const char *filecode = fp; if (strncmp(filecode, "DDS ", 4) != 0){ - Log::Error("Could not open DDS ressource %s: wrong format.", std::string(path).c_str()); + Log::Error("Could not open DDS resource %s: wrong format.", std::string(path).c_str()); return 0; } @@ -201,13 +201,13 @@ uint Resource::getTextureDDS(const std::string& path, float *aspect_ratio) break; default: { - Log::Error("Could not open DDS ressource %s: Not a DXT1, DXT3 or DXT5 texture.",std::string(path).c_str()); + Log::Error("Could not open DDS resource %s: Not a DXT1, DXT3 or DXT5 texture.",std::string(path).c_str()); return 0; } } if (height == 0 || bufsize == 0){ - Log::Error("Invalid image in ressource %s", std::string(path).c_str()); + Log::Error("Invalid image in resource %s", std::string(path).c_str()); return 0; } float ar = static_cast(width) / static_cast(height); @@ -259,7 +259,7 @@ uint Resource::getTextureImage(const std::string& path, float *aspect_ratio) return getTextureDDS(path, aspect_ratio); } - // return previously openned resource if already openned before + // return previously opened resource if already open if (textureIndex.count(path) > 0) { if (aspect_ratio) *aspect_ratio = textureAspectRatio[path]; return textureIndex[path]; @@ -274,17 +274,17 @@ uint Resource::getTextureImage(const std::string& path, float *aspect_ratio) size_t size = 0; const char *fp = getData(path, &size); if ( size==0 ){ - Log::Error("Could not open ressource %s: empty?",std::string(path).c_str()); + Log::Error("Could not open resource %s: empty?",std::string(path).c_str()); return 0; } img = stbi_load_from_memory(reinterpret_cast(fp), size, &w, &h, &n, 4); if (img == NULL) { - Log::Error("Failed to open ressource %s: %s", std::string(path).c_str(), stbi_failure_reason() ); + Log::Error("Failed to open resource %s: %s", std::string(path).c_str(), stbi_failure_reason() ); return 0; } if (h == 0){ - Log::Error("Invalid image in ressource %s", std::string(path).c_str()); + Log::Error("Invalid image in resource %s", std::string(path).c_str()); stbi_image_free(img); return 0; } diff --git a/SessionCreator.cpp b/SessionCreator.cpp index 0330675..de0b622 100644 --- a/SessionCreator.cpp +++ b/SessionCreator.cpp @@ -103,7 +103,7 @@ void SessionCreator::load(const std::string& filename) { XMLError eResult = xmlDoc_.LoadFile(filename.c_str()); if ( XMLResultError(eResult)){ - Log::Warning("%s could not be openned.", filename.c_str()); + Log::Warning("%s could not be opened.", filename.c_str()); return; } diff --git a/Stream.cpp b/Stream.cpp index 3514a87..2f3bfdf 100644 --- a/Stream.cpp +++ b/Stream.cpp @@ -336,7 +336,7 @@ void Stream::Frame::unmap() void Stream::close() { - // not openned? + // not opened? if (!opened_) { // wait for loading to finish if (discoverer_.valid()) diff --git a/Stream.h b/Stream.h index 8420090..c416c77 100644 --- a/Stream.h +++ b/Stream.h @@ -66,7 +66,7 @@ public: * */ bool isOpen() const; /** - * True if problem occured + * True if problem occurred * */ bool failed() const; /** diff --git a/UserInterfaceManager.cpp b/UserInterfaceManager.cpp index fe75d71..078265b 100644 --- a/UserInterfaceManager.cpp +++ b/UserInterfaceManager.cpp @@ -1783,7 +1783,7 @@ void HelperToolbox::Render() ImGui::Text ("Connected stream from another vimix in the local network (shared output stream)."); ImGui::NextColumn(); ImGuiToolkit::Icon(ICON_SOURCE_SRT); ImGui::SameLine(0, IMGUI_SAME_LINE);ImGui::Text("SRT"); ImGui::NextColumn(); - ImGui::Text ("Connected Secure Reliable Transport (SRT) stream emmitted on the network (e.g. broadcasted by vimix)."); + ImGui::Text ("Connected Secure Reliable Transport (SRT) stream emitted on the network (e.g. broadcasted by vimix)."); ImGui::NextColumn(); ImGui::Separator(); ImGui::Text(ICON_FA_COG); ImGui::NextColumn(); @@ -6401,7 +6401,7 @@ void Navigator::RenderMainPannelVimix() ImGuiToolkit::HelpToolTip("Select the history of recently opened files or a folder. " "Double-clic on a filename to open the session.\n\n" ICON_FA_ARROW_CIRCLE_RIGHT " Smooth transition " - "performs cross fading to the openned session."); + "performs cross fading to the opened session."); // toggle button for smooth transition ImGui::SetCursorPos( ImVec2( pannel_width_ IMGUI_RIGHT_ALIGN, pos_bot.y - ImGui::GetFrameHeightWithSpacing()) ); ImGuiToolkit::ButtonToggle(ICON_FA_ARROW_CIRCLE_RIGHT, &Settings::application.smooth_transition, "Smooth transition"); diff --git a/UserInterfaceManager.h b/UserInterfaceManager.h index c8fbefc..61b482a 100644 --- a/UserInterfaceManager.h +++ b/UserInterfaceManager.h @@ -27,7 +27,7 @@ #define IMGUI_TITLE_HELP ICON_FA_LIFE_RING " Help" #define IMGUI_TITLE_TOOLBOX ICON_FA_HAMSA " Guru Toolbox" #define IMGUI_TITLE_SHADEREDITOR ICON_FA_CODE " Code Editor" -#define IMGUI_TITLE_PREVIEW ICON_FA_DESKTOP " Ouput" +#define IMGUI_TITLE_PREVIEW ICON_FA_DESKTOP " Output" #define MENU_NEW_FILE ICON_FA_FILE " New" #define SHORTCUT_NEW_FILE CTRL_MOD "W" diff --git a/docs/index.md b/docs/index.md index 037110c..66b5e95 100644 --- a/docs/index.md +++ b/docs/index.md @@ -2,10 +2,10 @@ vimix performs **graphical mixing and blending** of several movie clips and computer generated graphics, with image processing effects in real-time. Its intuitive and hands-on user interface gives direct control on image opacity and -shape for producing live graphics during concerts and VJ-ing sessions. +shape for producing live graphics during concerts or VJ-ing sessions. -The ouput image is typically projected full-screen on an external -monitor or a projector, but can be streamed or recorded live (no audio). +The output image is typically projected full-screen on an external +monitor or a projector, but can be streamed live (SRT) or recorded (no audio). ![screenshot](vimix_0.2_beta.jpg) @@ -31,7 +31,7 @@ Download package from [Github Releases](https://github.com/brunoherbelin/vimix/r ## Control vimix with OSC You can control remotely vimix with [OSC](https://en.wikipedia.org/wiki/Open_Sound_Control), using [TouchOSC Mk1](https://github.com/brunoherbelin/vimix/wiki/TouchOSC-companion) -or using the [vimix OSC API](https://github.com/brunoherbelin/vimix/wiki/Open-Sound-Control-API) from your other OSC applications. +or using the [vimix OSC API](https://github.com/brunoherbelin/vimix/wiki/Open-Sound-Control-API) from your OSC applications. ## About @@ -42,7 +42,7 @@ from these 10 years of refinement of User-Experience design since its [first dra vimix is in its early infancy, open to [features requests and bugs reports](https://github.com/brunoherbelin/vimix/issues). -vimix welcomes contributions and support: check the [wiki](https://github.com/brunoherbelin/vimix/wiki) for more info +vimix welcomes contributions and support: check the [wiki](https://github.com/brunoherbelin/vimix/wiki) for more info. diff --git a/rsc/images/icons_LICENCE.txt b/rsc/images/icons_LICENCE.txt index 9d19a12..b1fe7d7 100644 --- a/rsc/images/icons_LICENCE.txt +++ b/rsc/images/icons_LICENCE.txt @@ -2,37 +2,72 @@ License Agreement https://iconmonstr.com/license/ -This license agreement (the “Agreement”) sets forth the terms by which Alexander Kahlkopf, the owner of iconmonstr (the “Licensor”), shall provide access to certain Work (defined below) to you (the “Licensee”, “you” or “your”). This Agreement regulates the free use of the icons, fonts, images and other media content (collectively, the “Work”), which is made available via the website iconmonstr.com (the “Website”). By downloading or copying a Work, you agree to be bound by the following terms and conditions. +This license agreement (the “Agreement”) sets forth the terms by which Alexander Kahlkopf, +the owner of iconmonstr (the “Licensor”), shall provide access to certain Work (defined below) +to you (the “Licensee”, “you” or “your”). This Agreement regulates the free use of the icons, +fonts, images and other media content (collectively, the “Work”), which is made available via +the website iconmonstr.com (the “Website”). By downloading or copying a Work, you agree to be +bound by the following terms and conditions. + 1. Grant of Rights -The Works on the Website are copyrighted property of Licensor. Licensor hereby grants Licensee a perpetual, non-exclusive, non-transferrable single-user license for the use of the Work based on the conditions of this Agreement. You agree that the Work serves as part of the design and is not the basis or main component of the product, template or application distributed by the Licensee. Furthermore, you agree not to sell, redistribute, sublicense, share or otherwise transfer the Work to other people or entities. +The Works on the Website are copyrighted property of Licensor. +Licensor hereby grants Licensee a perpetual, non-exclusive, non-transferrable single-user license +for the use of the Work based on the conditions of this Agreement. You agree that the Work serves +as part of the design and is not the basis or main component of the product, template or +application distributed by the Licensee. Furthermore, you agree not to sell, redistribute, +sublicense, share or otherwise transfer the Work to other people or entities. + 2. Permitted Uses - Licensee may use the Work in non-commercial and commercial projects, services or products without attribution. + Licensee may use the Work in non-commercial and commercial projects, services or products + without attribution. - Licensee may use the Work for any illustrative purposes in any media, including, but not limited to, websites, web banners, newsletters, PDF documents, blogs, emails, slideshows, TV and video presentations, smartphones, splash screens, movies, magazine articles, books, advertisements, brochures, document illustrations, booklets, billboards, business cards, packages, etc. + Licensee may use the Work for any illustrative purposes in any media, including, but not + limited to, websites, web banners, newsletters, PDF documents, blogs, emails, slideshows, + TV and video presentations, smartphones, splash screens, movies, magazine articles, books, + advertisements, brochures, document illustrations, booklets, billboards, business cards, + packages, etc. - Licensee may use the Work in template or application without attribution; provided, however, that the Work serves as part of the design and is not the basis or main component of the product, template or application distributed by Licensee and is not used contrary to the terms and conditions of this Agreement. + Licensee may use the Work in template or application without attribution; provided, however, + that the Work serves as part of the design and is not the basis or main component of the + product, template or application distributed by Licensee and is not used contrary to the + terms and conditions of this Agreement. Licensee may adapt or change the Work according to his or her requirements. 3. Prohibited Uses - Licensee may not sell, redistribute, sublicense, share or otherwise transfer the Work to other people or entities. + Licensee may not sell, redistribute, sublicense, share or otherwise transfer the Work to + other people or entities. Licensee may not use the Work as part of a logo, trademark or service mark. - Licensee may not use the Work for pornographic, infringing, defamatory, racist or religiously offensive illustrations. + Licensee may not use the Work for pornographic, infringing, defamatory, racist or religiously + offensive illustrations. 4. Additional Information on Rights -Certain Works, such as logos or brands, are subject to copyright and require the agreement of a third party for the assignment of these rights. Licensee is responsible for providing all rights, agreements, and licenses for the use of the Work. +Certain Works, such as logos or brands, are subject to copyright and require the agreement of +a third party for the assignment of these rights. Licensee is responsible for providing all rights, +agreements, and licenses for the use of the Work. + 5. Termination -This Agreement shall automatically terminate without notice if you do not comply with the terms or conditions specified in this Agreement. If you yourself wish to terminate this Agreement, destroy the Work, all copies and derivatives of the Work and any materials related to it. +This Agreement shall automatically terminate without notice if you do not comply with the terms +or conditions specified in this Agreement. If you yourself wish to terminate this Agreement, +destroy the Work, all copies and derivatives of the Work and any materials related to it. + 6. Indemnification -You agree to indemnify Licensor for any and all claims, liability performances, damages, costs (including attorney fees) or other liabilities that are caused by or related to a breach of this Agreement, which are caused by the use of the Website or Work, by the non-compliance of the use restrictions of a Work or which are caused by the claims of third parties regarding the use of a Work. +You agree to indemnify Licensor for any and all claims, liability performances, damages, costs +(including attorney fees) or other liabilities that are caused by or related to a breach of this +Agreement, which are caused by the use of the Website or Work, by the non-compliance of the use +restrictions of a Work or which are caused by the claims of third parties regarding the use of a Work. + 7. Warranty and Liability -The Website and the Works are provided “as is.” Licensor does not accept any warranty or liability regarding a Work, the Website, the accuracy of the information or rights described therein or the licenses, which are subject to this Agreement. Licensor is not liable for damages, costs, losses or claims incurred by you, another person or entity by the use of the Website or the Works. +The Website and the Works are provided “as is.” Licensor does not accept any warranty or liability +regarding a Work, the Website, the accuracy of the information or rights described therein or the +licenses, which are subject to this Agreement. Licensor is not liable for damages, costs, losses +or claims incurred by you, another person or entity by the use of the Website or the Works.