Advertisement
TheRightGuy

Okaiiii

Feb 27th, 2022
1,097
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.92 KB | None | 0 0
  1.  
  2. @Override
  3.     public void onSlashCommand(@NotNull final SlashCommandEvent event) {
  4.         String latex = Objects.requireNonNull(event.getOption(LATEX_OPTION)).getAsString();
  5.         String userID = (Objects.requireNonNull(event.getMember()).getId());
  6.         try {
  7.             if (latex.contains("$")) {
  8.                 latex = convertInlineLatexToFull(latex);
  9.             }
  10.         } catch (ParseException e) {
  11.             event.reply("That is an invalid latex: " + e.getMessage()).setEphemeral(true).queue();
  12.             return;
  13.         }
  14.         event.deferReply().queue();
  15.         sendImage(event, userID, latex);
  16.     }
  17.  
  18.  
  19. @Nullable
  20.     private ByteArrayOutputStream getRenderedTextImageStream(@NotNull SlashCommandEvent event,
  21.             String latex, Image image) {
  22.         if (image == null)
  23.             return null;
  24.         BufferedImage renderedTextImage = new BufferedImage(image.getWidth(null),
  25.                 image.getHeight(null), BufferedImage.TYPE_4BYTE_ABGR);
  26.         renderedTextImage.getGraphics().drawImage(image, 0, 0, null);
  27.         ByteArrayOutputStream renderedTextImageStream = new ByteArrayOutputStream();
  28.  
  29.         try {
  30.             ImageIO.write(renderedTextImage, "png", renderedTextImageStream);
  31.         } catch (IOException e) {
  32.             event.getHook().setEphemeral(true).editOriginal(RENDERING_ERROR).queue();
  33.             logger.warn(
  34.                     "Unable to render latex, could not convert the image into an attachable form. Formula was {}",
  35.                     latex, e);
  36.             return null;
  37.         }
  38.         return renderedTextImageStream;
  39.     }
  40.  
  41.  
  42. @Nullable
  43.     private Image getRenderedTextImageStream(@NotNull SlashCommandEvent event,
  44.             @NotNull String latex, @NotNull TeXFormula formula) {
  45.         Image image = formula.createBufferedImage(TeXConstants.STYLE_DISPLAY, DEFAULT_IMAGE_SIZE,
  46.                 FOREGROUND_COLOR, BACKGROUND_COLOR);
  47.         if (image.getWidth(null) == -1 || image.getHeight(null) == -1) {
  48.             event.getHook().setEphemeral(true).editOriginal(RENDERING_ERROR).queue();
  49.             logger.warn(
  50.                     "Unable to render latex, image does not have an accessible width or height. Formula was {}",
  51.                     latex);
  52.             return null;
  53.         }
  54.         return image;
  55.     }
  56.  
  57.     private void sendImage(@NotNull SlashCommandEvent event, String userID, String latex) {
  58.         TeXFormula formula = new TeXFormula();
  59.         Image image = getRenderedTextImageStream(event, latex, formula);
  60.         ByteArrayOutputStream renderedTextImageStream =
  61.                 getRenderedTextImageStream(event, latex, image);
  62.         if (renderedTextImageStream == null)
  63.             return;
  64.  
  65.         event.getHook()
  66.             .editOriginal(renderedTextImageStream.toByteArray(), "tex.png")
  67.             .setActionRow(Button.of(ButtonStyle.DANGER, generateComponentId(userID), "Delete"))
  68.             .queue();
  69.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement