diff --git a/Charcoal/Charcoal/Charcoal.cpp b/Charcoal/Charcoal/Charcoal.cpp index d35b020..9748dbb 100644 --- a/Charcoal/Charcoal/Charcoal.cpp +++ b/Charcoal/Charcoal/Charcoal.cpp @@ -78,7 +78,6 @@ Charcoal::Charcoal() { overlay_->view()->set_view_listener(this); } - Charcoal::~Charcoal() { } @@ -142,6 +141,12 @@ void Charcoal::grayscaleName(const JSObject& thisObject, const JSArgs& args) { / } +void Charcoal::contrastValue(const JSObject& thisObject, const JSArgs& args) { + MessageBoxA(NULL, "Please sit tight, contrasting your book.", "Book Contrasting", MB_OK); + +} + + void Charcoal::OpenFile(const JSObject& thisObject, const JSArgs& args) { //dialog box for file select @@ -199,6 +204,7 @@ void Charcoal::OnDOMReady(ultralight::View* caller, global["AddBook"] = BindJSCallback(&Charcoal::OpenFile); global["nameToGrayscale"] = BindJSCallback(&Charcoal::grayscaleName); global["deleteBook"] = BindJSCallback(&Charcoal::deleteBooks); + global["contrastValue"] = BindJSCallback(&Charcoal::contrastValue); auto scoped_context = context; diff --git a/Charcoal/Charcoal/Charcoal.h b/Charcoal/Charcoal/Charcoal.h index 47b4159..dec439a 100644 --- a/Charcoal/Charcoal/Charcoal.h +++ b/Charcoal/Charcoal/Charcoal.h @@ -36,6 +36,7 @@ class Charcoal : public AppListener, virtual void deleteBooks(const JSObject& thisObject, const JSArgs& args); virtual JSValue printAllBooks(const JSObject& thisObject, const JSArgs& args); virtual void grayscaleName(const JSObject& thisObject, const JSArgs& args); + virtual void contrastValue(const JSObject& thisObject, const JSArgs& args); // This is called when the DOM has loaded in one of its frames. virtual void OnDOMReady(ultralight::View* caller, diff --git a/Charcoal/Charcoal/Epub.cpp b/Charcoal/Charcoal/Epub.cpp index f7f4d68..edbd066 100644 --- a/Charcoal/Charcoal/Epub.cpp +++ b/Charcoal/Charcoal/Epub.cpp @@ -130,6 +130,10 @@ void Epub::grayscaleEpub(PWSTR path) { // Grayscale the image grayscaleImage(image, width, height); + // Contrast the image + int contrast_value = 1; + contrastImage(image, width, height, contrast_value); + std::string base_filename = name.substr(name.find_last_of("/\\") + 1); if(fileExt == "jpeg" || fileExt == "jpg") stbi_write_jpg((temp + base_filename).c_str(), width, height, channels, image, 100); @@ -163,3 +167,20 @@ void Epub::grayscaleImage(unsigned char* imageData, int width, int height) { imageData[3 * i + 2] = gray; } } + +void Epub::contrastImage(unsigned char* imageData, int width, int height, int contrast_value) { + // Convert RGB image to grayscale + for (int i = 0; i < width * height; ++i) { + unsigned char gray_value; + if (imageData[3 * i] * contrast_value > 255) { + gray_value = 255; + } + else { + gray_value = imageData[3 * i] * contrast_value; + } + + imageData[3 * i] = gray_value; + imageData[3 * i + 1] = gray_value; + imageData[3 * i + 2] = gray_value; + } +} diff --git a/Charcoal/Charcoal/Epub.h b/Charcoal/Charcoal/Epub.h index b64a5c5..9d63513 100644 --- a/Charcoal/Charcoal/Epub.h +++ b/Charcoal/Charcoal/Epub.h @@ -7,5 +7,6 @@ class Epub : public Library void grayscaleEpub(PWSTR Path); private: void grayscaleImage(unsigned char* imageData, int width, int height); + void contrastImage(unsigned char* imageData, int width, int height, int contrast_value); }; diff --git a/Charcoal/x64/Debug/Charcoal.exe b/Charcoal/x64/Debug/Charcoal.exe index c972656..ff220b2 100644 Binary files a/Charcoal/x64/Debug/Charcoal.exe and b/Charcoal/x64/Debug/Charcoal.exe differ diff --git a/Charcoal/x64/Debug/Charcoal.pdb b/Charcoal/x64/Debug/Charcoal.pdb index 808c875..869c176 100644 Binary files a/Charcoal/x64/Debug/Charcoal.pdb and b/Charcoal/x64/Debug/Charcoal.pdb differ diff --git a/Charcoal/x64/Debug/assets/books.html b/Charcoal/x64/Debug/assets/books.html index 22be6f3..b74029a 100644 --- a/Charcoal/x64/Debug/assets/books.html +++ b/Charcoal/x64/Debug/assets/books.html @@ -127,6 +127,13 @@

BOOKS:

nameToGrayscale(); } + + +