Compare commits
	
		
			5 Commits
		
	
	
		
			master
			...
			revert-43-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 1fbf057fcc | ||
|   | d4348138df | ||
|   | 0f40406ddd | ||
|   | 763aa3e638 | ||
|   | e5306c9aca | 
| @@ -15,7 +15,6 @@ See the difference by disabling this optimization using the `-0` option. Or just | |||||||
|  |  | ||||||
| ## News | ## News | ||||||
|  |  | ||||||
| - 2019-03-26: Exciting week: @Cableo has fixed output redirection, @boretom has added cross-compilation support to the build file and @AlanDeSmet has fixed tall thumbnails and greyscale images. |  | ||||||
| - 2019-01-14: Install via snap: `sudo snap install --edge tiv` | - 2019-01-14: Install via snap: `sudo snap install --edge tiv` | ||||||
|  |  | ||||||
| ## Installation | ## Installation | ||||||
| @@ -32,8 +31,6 @@ See the difference by disabling this optimization using the `-0` option. Or just | |||||||
|     make |     make | ||||||
|     sudo make install |     sudo make install | ||||||
|  |  | ||||||
| Note: On MacOS, you'll need to install GCC because of this issue: https://stackoverflow.com/q/42633477. Find some more details here: https://github.com/stefanhaustein/TerminalImageViewer/issues/36 |  | ||||||
|  |  | ||||||
| ## Usage | ## Usage | ||||||
|  |  | ||||||
|     tiv [options] <filename(s)> |     tiv [options] <filename(s)> | ||||||
| @@ -68,4 +65,3 @@ If multiple images match the filename spec, thumbnails are shown. | |||||||
| The top image was generated with the character optimization disabled via the `-0` option. | The top image was generated with the character optimization disabled via the `-0` option. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -195,7 +195,8 @@ CharData getCharData(const cimg_library::CImg<unsigned char> & image, int x0, in | |||||||
|   int count2 = iter->first; |   int count2 = iter->first; | ||||||
|   long max_count_color_1 = iter->second; |   long max_count_color_1 = iter->second; | ||||||
|   long max_count_color_2 = max_count_color_1; |   long max_count_color_2 = max_count_color_1; | ||||||
|   if ((++iter) != color_per_count.rend()) { |   if (iter != color_per_count.rend()) { | ||||||
|  |     ++iter; | ||||||
|     count2 += iter->first; |     count2 += iter->first; | ||||||
|     max_count_color_2 = iter->second; |     max_count_color_2 = iter->second; | ||||||
|   } |   } | ||||||
| @@ -329,7 +330,7 @@ void emit_color(int flags, int r, int g, int b) { | |||||||
|   int gq = COLOR_STEPS[gi]; |   int gq = COLOR_STEPS[gi]; | ||||||
|   int bq = COLOR_STEPS[bi]; |   int bq = COLOR_STEPS[bi]; | ||||||
|    |    | ||||||
|   int gray = static_cast<int>(std::round(r * 0.2989f + g * 0.5870f + b * 0.1140f)); |   int gray = std::round(r * 0.2989f + g * 0.5870f + b * 0.1140f); | ||||||
|  |  | ||||||
|   int gri = best_index(gray, GRAYSCALE_STEPS, GRAYSCALE_STEP_COUNT); |   int gri = best_index(gray, GRAYSCALE_STEPS, GRAYSCALE_STEP_COUNT); | ||||||
|   int grq = GRAYSCALE_STEPS[gri]; |   int grq = GRAYSCALE_STEPS[gri]; | ||||||
| @@ -439,24 +440,11 @@ cimg_library::CImg<unsigned char> load_rgb_CImg(const char * const filename) { | |||||||
| } | } | ||||||
|  |  | ||||||
| int main(int argc, char* argv[]) { | int main(int argc, char* argv[]) { | ||||||
|   int maxWidth = 80; |  | ||||||
|   int maxHeight = 24; |  | ||||||
|   bool sizeDetectionSuccessful = true; |  | ||||||
|   struct winsize w; |   struct winsize w; | ||||||
|   int ioStatus = ioctl(STDOUT_FILENO, TIOCGWINSZ, &w); |   ioctl(STDOUT_FILENO, TIOCGWINSZ, &w); | ||||||
|   // If redirecting STDOUT to one file ( col or row == 0, or the previous ioctl call's failed ) |    | ||||||
|   if (ioStatus != 0 || (w.ws_col | w.ws_row) == 0) { |   int maxWidth = w.ws_col * 4; | ||||||
|     ioStatus = ioctl(STDIN_FILENO, TIOCGWINSZ, &w); |   int maxHeight = w.ws_row * 8; | ||||||
|     if (ioStatus != 0 || (w.ws_col | w.ws_row) == 0) { |  | ||||||
|       std::cerr << "Warning: failed to determine most reasonable size, defaulting to 80x24" << std::endl; |  | ||||||
|        sizeDetectionSuccessful = false; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   if (sizeDetectionSuccessful) |  | ||||||
|   { |  | ||||||
|     maxWidth = w.ws_col * 4; |  | ||||||
|     maxHeight = w.ws_row * 8; |  | ||||||
|   } |  | ||||||
|   int flags = 0; |   int flags = 0; | ||||||
|   Mode mode = AUTO; |   Mode mode = AUTO; | ||||||
|   int columns = 3; |   int columns = 3; | ||||||
| @@ -535,7 +523,7 @@ int main(int argc, char* argv[]) { | |||||||
| 	std::string name = file_names[index++]; | 	std::string name = file_names[index++]; | ||||||
| 	try { | 	try { | ||||||
| 	  cimg_library::CImg<unsigned char> original = load_rgb_CImg(name.c_str()); | 	  cimg_library::CImg<unsigned char> original = load_rgb_CImg(name.c_str()); | ||||||
| 	  auto cut = name.find_last_of("/"); | 	  unsigned int cut = name.find_last_of("/"); | ||||||
| 	  sb += cut == std::string::npos ? name : name.substr(cut + 1); | 	  sb += cut == std::string::npos ? name : name.substr(cut + 1); | ||||||
| 	  size newSize = size(original).fitted_within(maxThumbSize); | 	  size newSize = size(original).fitted_within(maxThumbSize); | ||||||
| 	  original.resize(newSize.width, newSize.height, 1, -100, 5); | 	  original.resize(newSize.width, newSize.height, 1, -100, 5); | ||||||
| @@ -548,7 +536,7 @@ int main(int argc, char* argv[]) { | |||||||
| 	  // Probably no image; ignore. | 	  // Probably no image; ignore. | ||||||
| 	} | 	} | ||||||
|       } |       } | ||||||
|       if (count) emit_image(image, flags); |       emit_image(image, flags); | ||||||
|       std::cout << sb << std::endl << std::endl; |       std::cout << sb << std::endl << std::endl; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user